getElementsByClassName 不返回固定答案
getElementsByClassName does not return a fixed answer
在Javascript中,我使用以下方法获取给定类的元素:
A = document.getElementsByClassName("someclass");
> A contains elements e1, e2, e3, e4
然后,我更改以下元素之一的类:
document.getElementById("e2").className = "anotherclass";
令我非常惊讶的是,数组 A 在此过程中已自动更改!
> A contains elements e1, e3, e4
我以为getElementsByClassName
返回的数组现在将保持不变。
- 这怎么可能?这是预期的行为吗?
- 有没有简单的方法来改变这一点?
这是一个JSfiddle。
请注意,对于getElementById
也是如此。
这是因为A
不是Array
。 getElementByClassName
返回一个由于文档中的更改而实时更新的HTMLCollection
。
将类似数组的对象转换为数组的最简单方法是执行以下操作:
var A = ...
// With ES5 code
var A_array = Array.prototype.slice.call(A);
// With ES6 code
var A_array = Array.from(A);
或者你可以通过querySelectorAll
获得NodeList
,这不会实时更新。
var A = document.querySelectorAll('.someclass');
这些函数返回实时 NodeLists。这意味着它们会自动更新以反映 DOM 的当前内容。
请参阅NodeList
文档。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- RegExp-如何返回单行答案而不是多行答案
- Math.random不断返回相同的答案
- 如何将答案返回到文本区域
- 如果语句返回错误答案
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案
- Javascript 的提示,它接受简单的数学作为值,然后返回答案
- Javascript.如何将问题和正确答案返回给 Math.random
- 如何显示返回确认的返回答案
- 我正在尝试制作一个基于遗传学的身高计算器.但是javascript没有;t返回预期答案
- 为什么我的函数if/else-if/else-if语句返回相同的答案
- 我如何引用并返回一个响应,基于一个单选按钮的答案,该单选按钮包含在另一个单选键中
- 为什么答案是.Id和response.name返回null
- 节点没有返回正确的答案
- getElementsByClassName 不返回固定答案
- 选择答案前返回对话框
- 使用javascript检查是否选择了单选按钮,并根据选择返回特定答案
- 公式返回的值略低于“正确”答案