日期:2014-05-16  浏览次数:20378 次

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);
}就可以了