首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 跨浏览器开发 >

Firefox的document.getElementsByTagName的错误

2013-08-16 
Firefox的document.getElementsByTagName的异常Firefox的document.getElementsByTagName得到的结果与其它

Firefox的document.getElementsByTagName的异常
Firefox的document.getElementsByTagName得到的结果与其它浏览器有点不同
下面这段代码,原本我认为for循环会执行4次,因为文档中就4个div标签,但事实是会执行5次.经过测试,body的直属div都会取两次,不知道如何处理这种情况


<html>
<body>
<p id="p1">p1</p>
<div id="mar">
<div>
<div>2</div>
<div>3</div>
</div>
</div>
<script type="text/javascript">
var divs = document.getElementsByTagName("div");
var index = 0;
for (var x in divs)
{
index++;
var p = divs[x];
if (typeof(p) != "object" ) {continue;};
alert(index + ":" + typeof(divs[x]) + "::" + divs[x] + ":::" + divs[x].innerHTML)
};
</script>
</html>

[解决办法]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<p id="p1">p1</p>
<div id="mar"><div><div>2</div><div>3</div></div></div>
<script type="text/javascript">
var divs = document.getElementsByTagName("div");

var index = 0;
/*
for (var x in divs)
{
    index++;
    var p = x;
    ///if (typeof(p) != "object" ) {continue;};
    alert(index + ":" +  p.innerHTML);

}*/
for(var i=0;i<divs.length;i++){
    index++;
    var p = divs.item(i);
    alert(index + ":" +  p.innerHTML);
}
</script>
</body>
</html>

------解决方案--------------------


楼上正解,老老实实的按照数组的方法去处理,肯定没问题。

对于得到的divs对象,浏览器的处理方式有些区别,如图,Firefox的document.getElementsByTagName的错误
在Firefox里面,如果元素本身有ID,也会被解释进divs对象里,至于为什么这么做,无从知晓。 假如,你把4个div都赋上ID,那么最后结果会是8个。



热点排行