javascript 数组长度值变化。没有重新赋值,为什么4 变成了8?
<ul><li></li><li></li><li></li></ul>-------------------------------------------------...
<ul>
<li></li>
<li></li>
<li></li>
</ul>
------------------------------------------------------------------
oUl=doucment.getElementsByTagName("ul")[0];
aLi=document.getElementsById("li"); //一共是4个li标签
alert(aLi.length); //显示是4
-------------------------------
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
alert(aLi.length) //为什么是8?
这里没有重新赋值,为什变成了8呢? 展开
<li></li>
<li></li>
<li></li>
</ul>
------------------------------------------------------------------
oUl=doucment.getElementsByTagName("ul")[0];
aLi=document.getElementsById("li"); //一共是4个li标签
alert(aLi.length); //显示是4
-------------------------------
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
alert(aLi.length) //为什么是8?
这里没有重新赋值,为什变成了8呢? 展开
3个回答
展开全部
哥们儿,你搞笑呢吧?
你确定上面的代码是你测试后复制过来的?不是吧?我估计是你在这又重新手打了一遍
所以导致了三个错误
1、第一个 document 写成了 doucment
2、第二个 getElementsByTagName 写成了 getElementsById
3、你例子中给出了 3 个 li,下面你说成 4。
好吧,不说这些错误。输出 6 (你说 8 也好) 是因为
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
这一句已经更新了 HTML DOM 的结构,aLi 并不是一个固定的数值,你把 document.getElementsByTagName("li") 这个【方法】赋予了 aLi,当 aLi 被再次调用的时候,它会重新获取元素。
但如果你把 aLi 变量写成 aLi=document.getElementsById("li").length;,然后在下面输出,两次就都会是 3 了。
你确定上面的代码是你测试后复制过来的?不是吧?我估计是你在这又重新手打了一遍
所以导致了三个错误
1、第一个 document 写成了 doucment
2、第二个 getElementsByTagName 写成了 getElementsById
3、你例子中给出了 3 个 li,下面你说成 4。
好吧,不说这些错误。输出 6 (你说 8 也好) 是因为
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
这一句已经更新了 HTML DOM 的结构,aLi 并不是一个固定的数值,你把 document.getElementsByTagName("li") 这个【方法】赋予了 aLi,当 aLi 被再次调用的时候,它会重新获取元素。
但如果你把 aLi 变量写成 aLi=document.getElementsById("li").length;,然后在下面输出,两次就都会是 3 了。
追问
不好意思,确实是手误,没有认真检查。
是4个li
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
这一句已经更新了 HTML DOM 的结构,aLi 会重新获取元素
这种事情我还是第一次遇到,我只是奇怪没有重新赋值,怎么就自动更新数值,能深入解释一下吗?
追答
刚更新了一下回答,你应该没看到
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
这一句已经更新了 HTML DOM 的结构
aLi = document.getElementsByTagName("li");
aLi 并不是一个固定的数值,你把 document.getElementsByTagName("li") 这个【方法】赋予了 aLi,当 aLi 被再次调用的时候,它会重新获取元素。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询