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呢?
展开
 我来答
马后雷鼓下扬州5058
2013-04-25 · TA获得超过4321个赞
知道小有建树答主
回答量:693
采纳率:33%
帮助的人:811万
展开全部
哥们儿,你搞笑呢吧?

你确定上面的代码是你测试后复制过来的?不是吧?我估计是你在这又重新手打了一遍
所以导致了三个错误

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 被再次调用的时候,它会重新获取元素。
百度网友8041235
2013-04-25 · TA获得超过227个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:229万
展开全部
你的代码能否运行我都很怀疑。
aLi=document.getElementsById("li"); //一共是4个li标签
这都错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnwshuai
2013-04-25 · TA获得超过100个赞
知道答主
回答量:159
采纳率:0%
帮助的人:97万
展开全部
这代码能运行就怪了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式