为了账号安全,请及时绑定邮箱和手机立即绑定

forEach 在 getElementsByName 工作

forEach 在 getElementsByName 工作

德玛西亚99 2022-09-02 10:47:31
有人可以帮我为什么这有效吗:var quantity = document.getElementsByName("quantity");quantity.forEach(item => item.addEventListener('change',(function() {myFunction();})));但这不是:var quantity = document.getElementsByClassName("quantity");quantity.forEach(item => item.addEventListener('change',(function() {myFunction();})));输出格式是否不同?我必须改变才能得到相同的结果。当类为“quantity”的输入字段发生更改时运行函数?...
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

getElementsByName返回一个 NodeList,并且 NodeList 上确实有一个方法。forEach


相反,返回一个 HTMLCollection,并且 HTMLCollections 没有关于它们的方法。getElementsByClassNameforEach


它们在其他方面都是非常相似的类似数组的集合。


如果需要,可以使用 这两种方法进行迭代:for..of


for (const quantity of document.getElementsByClassName("quantity")) {

  quantity.addEventListener('change', myFunction);

}

与其记住所有的差异,我更喜欢总是使用,因为它返回一个静态的(更可预测的)NodeList(因此有),它也比任何其他选择方法都灵活得多(因为它可以接受任何选择器字符串)。querySelectorAllforEach


查看完整回答
反对 回复 2022-09-02
?
慕标5832272

TA贡献1966条经验 获得超4个赞

尝试

Array.from(quantity).forEach(item => item.addEventListener('change',(function() {myFunction();})));

document.getElementsByName 返回一个 NodeList [],该列表可作为数组进行迭代,而 getElementsByClassname 返回一个 HTMLCollection [],该列表不是。


查看完整回答
反对 回复 2022-09-02
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号