- 节点的层次结构

- 节点的类型node,都具有nodeType属性。其属性值为1-13的数值。一般来说,somenode.nodeType==1,则表明该节点为元素节点。somenode.nodeType==3,则表明该节点为文本节点。
- 以上两个节点类型用的比较多一些。
- nodeValue和nodeName属性返回节点的名称和值。
- 每个节点都有childNodes属性,该属性保存了一个nodeList对象。这个对象是类数组,动态的,可以通过[ ]来访问childNodes。
1 var firstChild = someNode.childNodes[0]; 2 var secondChild = someNode.childNodes.item(1); 3 var count = someNode.childNodes.length;
- 操作节点(都需要通过somenode这个节点对象来调用)
- appendChild()用于给childNodes的末尾添加一个节点。
- inserBefore()给childNodes中的特定位置上插入节点。第一个参数是传入的节点,第二个是参照位置。
- replaceChild()移除childNodes中的节点。第一个参数是要移除的节点,第二个参数是用于替换的节点。
- HTMLDocument的操作
- 最常见的是getElementById和 getElementsByTagName()。
- 返回的对象为HTMLCollection[ ] ;
- 获得到的element具有以下属性:
- id
- title
- lang
- dir
- className
可以直接访问和修改甚至删除。getAttribute() ,setAttribute(), removeAttribute()
1 var div=document.getElementById('div'); 2 //show attribute 3 console.log(div.getAttribute('id')) 4 //set attribute 5 div.setAttribute("id","mydiv"); 6 console.log(div.id) 7 //add attribute and then remove it 8 div.color="red"; 9 console.log(div.getAttribute("color"));//null 10 console.log(div.color);//red
注意:直接设置属性,是无法成为attribute的。所以只能通过div.color这种方式来访问。
- document.write()方法可以在页面被呈现的过程中直接向其中输出内容。如果在文档加载结束后再调用document.write(),那么输出的内容将会重写整个页面。
1 <div id="showTime"> 2 <p>The current time is: </p> 3 <script type="text/javascript"> 4 function showtime(){ 5 document.write("<strong>"+new Date().toString()+"<strong>"); 6 } 7 showtime(); 8 </script> 9 </div>
2. 遍历元素内所有的属性名和值
1 function iterateAttributes(element){ 2 var pairs=new Array(); 3 var i; 4 var len=element.attributes.length; 5 var attrName, attrValue; 6 for(i=0;i!=len;i++){ 7 attrName=element.attributes[i].nodeName; 8 attrValue=element.attributes[i].nodeValue; 9 pairs.push("name="+attrName+" value="+attrValue); 10 } 11 return pairs.join(' '); 12 }
3. 创建元素
使用document.creatElement(" ")来创建元素
- text类型
- 通过childNodes和nodeValue来获得
1 var div_2=document.getElementById('div_2'); 2 console.log(div_2.childNodes[0]);//"DIV 2" 3 console.log(div_2.childNodes[0].nodeValue);//DIV 2
- 创建文本节点的方法:
- 创建一个element
- 将textNode添加入element
- 将element添加到body
1 //添加文本节点的顺序: 2 var element=document.createElement('div_3');//创建一个元素节点 3 var textNode=document.createTextNode("Hello A");//创建一个文本节点 4 element.appendChild(textNode);//将文本节点嵌入元素节点 5 document.body.appendChild(element);//将元素节点嵌入文档树中
如果有多个textNode添加到元素节点内部,那么需要通过element.normalize()来规范化,将所有的textNode合并成一个节点。
同样,可以通过element.split( n )来分割文本节点,传入n是文本分割的位置。
- 注释节点
- 性质和文本节点一样
1 <div> 2 <!--> comment </!--> 3 </div>
浙公网安备 33010602011771号