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