日期:2014-05-17  浏览次数:20644 次

为什么body里面最有还有script元素
遍历body里面的元素节点,scrpt明明在body外,不算子节点,为什么出现在遍历结果中?

<body>
<div id="oDiv1">元素1</div>
<div id="oDiv2">元素2</div>
<div id="oDiv4">元素3</div>
<div id="oDiv5">元素4</div>
<div id="oDiv6">元素5</div>
<div id="oDiv7">元素6</div>
<div id="oDiv8">元素7</div>
<div id="oDiv9">元素8</div>
</body>
<script>
//这里script在body外面,但是运行和调试结果显示bodyNodeList里面最后的元素是script
var bodyNode=document.body;
if(bodyNode.hasChildNodes()){
var bodyNodeList=bodyNode.childNodes;
var bodyNodeLen=bodyNodeList.length;
        //遍历body里的元素节点
for(var i=0;i<bodyNodeLen;i++){
if(bodyNodeList.item(i).nodeType==1)
getNodeInfo(bodyNodeList.item(i));
}
}
function getNodeInfo(_n){
document.write("节点名:"+_n.nodeName+"<br>");
document.write("节点值:"+_n.innerHTML+"<br>");
document.write("id属性:"+_n.id+"<br>");
document.write("============================"+"<br>");

}
</script>


------解决方案--------------------
引用:
遍历body里面的元素节点,scrpt明明在body外,不算子节点,为什么出现在遍历结果中?
XML/HTML code?123456789101112131415161718192021222324252627282930<body><div id="oDiv1">元素1</div><div id="oDiv2">元素2</div><div id="oDiv4">元素……

复制过来的
按照HTML5标准中的HTML语法规则,如果在</body>后再出现<script>或任何元素的开始标签,都是parse error,浏览器会忽略之前的</body>,即视作仍旧在body内。所以实际效果和写在</body>之前是没有区别的。
------解决方案--------------------
虽然你写在外边了,但是浏览器解析的时候,把它放在里边了,相当于:

<body>
.....
<script>
.....
</script>
</body>