javascript - 如何使用带有香草 Javascript 的部分 ID 捕获对元素的点击?
问题描述
我想在单击一系列元素中的一个时运行一个函数,并希望使用部分 ID 来定位这些元素。目前,只有第一个元素在点击时响应。我做错了什么?我的代码:
HTML:
<div>
<a id="selector-0">Zero</a>
</div>
<div>
<a id="selector-1">One</a>
</div>
<div>
<a id="selector-2">Two</a>
</div>
JS:
document.querySelector('[id^="selector-"]').onclick = function(){
var id_selector = this.getAttribute('id');
alert('ID: ' + id_selector);
}
我尝试将 querySelector 更改为包含 'a[id^="selector-"]',但只有第一个元素想要在点击时响应。
解决方案
将*=
选择器与id
as 属性和document.querySelectorAll
.
然后将onclick
加到给定的检索元素数组的所有元素中。
const els = Array.from(document.querySelectorAll('[id*=selector-]'));
console.log(els.length);
els.forEach(el => el.onclick = () => console.log('Clicked el:', el));
<div>
<a id="selector-0">Zero</a>
</div>
<div>
<a id="selector-1">One</a>
</div>
<div>
<a id="selector-2">Two</a>
</div>
推荐阅读
- c++ - 是否可以使用三元来切换/控制/谓词成员函数调用?
- html - 如何左/居中/右对齐表格单元格
- python - 如何在 AnacondaPrompt 中使用 pocketsphinx
- react-router - 通过的道具显示为未定义
- javascript - 使用 Web Share Target 发送数据后如何退出我的 PWA?
- java - 如何按分隔符的顺序在java中拆分文件内容?
- arrays - 最长的子序列,使得相邻之间的差是一
- c# - 由于元数据文件丢失 (CS0006) 导致解决方案构建失败
- database - Laravel 多对多关系 m 从数据库中搜索
- spring - mongodb 错误:位置运算符未从查询中找到所需的匹配项