网络编程
位置:首页>> 网络编程>> JavaScript>> 小结下dom节点操作(3)

小结下dom节点操作(3)

作者:风月 来源:阿里妈妈UED 发布时间:2011-03-08 10:33:00 

标签:dom,节点,javascript

获取节点信息:


.nodeName//只读,返回节点名称,相当于tagName.
.nodeValue//可读可写,但对元素节点不能写。返回一个字符串,指示这个节点的值。元素节点返回null,属性节点返回属性值,文本节点返回文本。一般只用于设置文本节点的值。
.nodeType//只读,返回节点类型:1,元素节点;2,属性节点;3,文本节点。

node.contains() //是否包含某节点,返回boolean值,IE支持,FF不支持contains(),但支持W3C标准compareDocumentPosition() .
node.hasChildNodes()//是否有子节点,返回boolean值


属性节点


 setAttribute(key,value)//element.setAttribute(attributeName,attributeValue),setAttribute()方法只能用在属性节点上。
getAttribute(key)//返回一个给定元素的一个给定属性节点的值


备注:

[1]childNodes兼容性问题说明:

用IE的调试工具会发现IE中把空格解析成“#text”,即IE会把2个标签之间只要有回车或空格的地方解析成空白文本节点,就多了个节点nodeName="#text"。而FF中却不会。

测试代码:


//节点之间留有空格和回车
<div id="test1">
<div>first</div>
<div>second</div>
<div>third</div>
</div>

//除注释外,节点间无空格回车
<div id="test2"><div>first</div><div>second</div><div>third</div></div>

var val1=document.getElementById("test1").childNodes.length;
var val2=document.getElementById("test2").childNodes.length;
alert("val1="+val1+":"+"val2="+val2)


测试结果:

IE中是val1=7:val2=3
FF中是val1=3:val2=3

兼容性解决办法:

在for循环里不妨加上:
if(childNode.nodeName=="#text") continue;
或者nodeType == 1。

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com