var oul = document.getElementById('myul'),
oli = oul.getElementsByTagName('li');//添加li前获取
console.dir(oli);//添加li前输出
//添加li
var create = function(){
for(var i = 0;i < 5;i++){
var li = document.createElement('li');
oul.appendChild(li);
}
}();
var newli = oul.getElementsByTagName('li');//添加li后获取
console.dir(newli)//添加li后输出
console.log(newli === oli);// true
上面这段代码输出结果:
不是很理解,为什么添加Li操作前后获取的li的HTMLCollection是一样的
补充:console.log()输出
第一个,首先第一步,你看到的是HTMLCollection[0],这是因为此时你log的时候oli的结果确实是只有0个的,后来你添加了li;然后第二步,你在控制台点开那个结果,这次显示的是5个li的内容。
然后来看为啥点开了之后是5个,而且你也看到了两次判断是相等的;核心原因是
getElementsByTagName
getElementsByClassName
等返回的是HTMLCollection
,注意和NodeList
的区别,HTMLCollection是live的。详细参见 DOM http://www.w3.org/TR/dom/#old-style-collections:-nodelist-and-htmlcoll...