更改数组中DOM对象的属性是否从数组中删除该对象?

saw*_*awa 3 javascript arrays dom

我使用以下方法获取DOM对象数组getElementsByClassName:

a = document.getElementsByClassName("foo");  
Run Code Online (Sandbox Code Playgroud)

在这一点上,假设a.length是3.然后,在一些函数调用期间,我想通过更改其类名来切换其中一些对象的属性.例如,我修改了类的名称a[0]:

a[0].className = "bar";
Run Code Online (Sandbox Code Playgroud)

似乎a[0]现在删除了刚刚调用的对象a.a.length现在2.

我想知道为什么会这样.我定义a了一次,但后来对其元素的修改似乎影响了其成员资格a.有人可以解释一下吗?

pim*_*vdb 5

根据规范,NodeList您获得的(一种魔法阵列)是现场的.

DOM中的NodeList和NamedNodeMap对象是实时的 ; 也就是说,对底层文档结构的更改将反映在所有相关的NodeList和NamedNodeMap对象中.

例如,如果一个DOM用户得到含有元素的子元素的NodeList对象,随后添加更多的儿童到该元素(或移除儿童,或修改它们),这些变化会自动反映在节点列表,而对进一步的行动用户的一部分.