读书人

childNodes的值居然不一样?

发布时间: 2012-08-03 00:12:14 作者: rapoo

childNodes的值竟然不一样???

HTML code
<script>function sh(o){  alert(o.parentNode.childNodes.length);}</script><div>  <div onclick='sh(this)'>标题</div>  <div>内容</div></div>


在IE中,返回的是2,是正确的,但用chrome,返回的却是4,造成程序出错,怎么会这样子呢???

[解决办法]
浏览器会把空白以及文字的地方看成一个textNode 而ie不会

[解决办法]
把alert(o.parentNode.childNodes.length);换成
alert(o.parentNode.children.length);
[解决办法]
实际上不能说IE的正确,chrome、firefox、opera都会把空白文本,比如回车换行、空字符串、制表符等解释为一个text节点。严格来说我比较讨厌IE,不是那么标准。
[解决办法]
JScript code
function sh(o){    var obj=o.parentNode.firstChild;    while(obj && obj.nodeType!=1)obj=obj.nextSibling;    if(obj.className=="c"){        o.className="bg1";        obj.className="hidden";    }    else{        o.className="bg2";        obj.className="c";    }}
[解决办法]
你换个取法,<div>
<div id="xx" onclick='sh(this)'>标题</div>
<div>内容</div>
</div>,加个id,然后
function sh(o)
{
// alert(o.parentNode.childNodes.length);
alert(document.getElementById("xx").innerHTML.length);
}就可以了

读书人网 >JavaScript

热点推荐