childNodes属性?
关于childNodes属性的问题?
/*html代码*/
<body>
<h1>Snapshots</h1>
<ul>
<li>
<a href="#">Fireworks</a>
</li>
</ul>
<img id="placeholder" src="images/placeholder.gif" alt="childNodes属性"/>
</body>
/*js*/
function countBodyChildren(){
var body_element=document.getElementsByTagName("body")[0];
alert (body_element.childNodes.length);
}
得出的body子元素的个数为4
不应该是3吗?
测得,h1 ul 匀为1,而img却占2????为什么?
又测了input也和img的情况一样
alert (body_element.childNodes[3].outerHTML);
看看最后一个元素是什么就ok了 4 楼 niuyuewanzi 2007-11-01 afcn0 写道不要闹,你在ff下看看还是8个了,那你是不是要疯了,呵呵
其实很简单,script也算入body元素的,所以是4个,ff是8个是因为textNode也是节点,不要连续使用多个"?",使人看着不爽
前部分说的是没错的,但是这就是唯一的原因,BODY本身是不可能被算在内的.因为BODY的CHILD中不可能包含BODY自己.
为什么?原来本以为是3个ELEMENTS(IE中),现在是4个,前3个分别为H1,UL,IMG,最后一个是什么
运行alert(document.getElementsByTagName('body')(0).childNodes[3].nodeName)
RETURN ==> #text ,是个TEXT NODE. 把后面所有回车行合并为1行里就没问题了...
5 楼 afcn0 2007-11-01 其实此问题需要仔细研究下,一般ff在元素之间只要有空格就会看成是childNode,但是ie好象很奇怪,一般元素之间的空格回车都不算text节点,只有比如img元素后面有空格回车的算文本节点,我说的最后一个是script,是写个<script>在里面,虽然在body外面,但是ie也会把script弄进body里面去