(1)HTMLCollection表示HTML元素的集合,同样拥有length,item(),[].等属性方法。
常见操作返回HTMLCollection
- Ele.getElementsByTagName()等
- document.scripts //返回所有script标签集合
- document.links //返回所有a标签集合
- document.images //返回所有img标签集合
- document.forms
- tr.cells //返回所有td标签集合
- select.options //返回所以select全部选项。
(2)类数组对象NamedNodeMap
通过Ele.attributes得到
它获得所以属性的集合!
(3)类数组对象的动态性
- nodeList、HTMLCollection、NamedNodeMap三个集合,都是动态的、有生命的、有呼吸的对象。
- 他们实际上是基于Dom结构动态执行查询的结果,因此DOM结构的变化能够自动反映这些对像中。
- 每当对象结构变化时,他们都回得到跟新,因此,他们始终都会保存着最新,最准确的信息
var divs = document.getElementByTagName('div');
var i = 0;
while(i<divs.length){
document.body.appendchild(document.createElement('div'));
i++
}
这个程序会进入死循环!
原因在于divs.length 是动态跟新的!它不断的在变化。
解决方法
就是把这个变量事先保存起来!
var divs = document.getElementByTagName('div');
var len = divs.length
var i = 0;
while(i<len){
document.body.appendchild(document.createElement('div'));
i++
}
这样程序就可以达到我们的预期了。