<body>
<ul>
</ul>
<script>
var oUl=document.body.children[0]; //拿到body下的ul
for(var i=0;i<3;i++){
//每次给li赋值一个新的对象
var oLi=document.createElement('li');////////
oLi.innerHTML='现在是第'+i+'个';
oUl.appendChild(oLi);
}
//获取oUl下的'li'
var aLi=oUl.getElementsByTagName('li');
alert(aLi.length)//3
</script>
</body>
我的问题是:每次执行完下面这句赋值语句后,oLi原来保存的节点对象,不就没有了吗?为什么for循环过后,还是可以正常的创建3个li节点呢?谢谢!
var oLi=document.createElement('li');
按照大家的启发,画了个图。我这么理解对吧?
高洛峰2017-04-10 15:24:50
oLi一直存在作用域中,在js是没有块级作用域的概念,等效的代码:
var oLi;
for(var i=0;i<3;i++){
//每次给li赋值一个新的对象
oLi=document.createElement('li');////////
oLi.innerHTML='现在是第'+i+'个';
oUl.appendChild(oLi);
}