javascript - 普通的 javaScript 从事件侦听器获取函数中的属性
问题描述
所以我想弄清楚如何从一组共享相同类名的链接中获取数据 id 值。例如链接出现在这个标记中
<td><a class="deleteLink" href="#" data-id="4">✕</a></td>
<td><a class="deleteLink" href="#" data-id="7">✕</a></td>
然后我有一些创建事件监听器的javascript。出于某种原因,我在控制台中收到一条错误消息“ Uncaught TypeError: this.getAttribute is not a function ”
function deleteUser(event){
event.preventDefault();
var userId = this.getAttribute('data-id');
if(confirm('Are you sure you want to delete this entry?')){
window.location.href = 'delete.php?id=' + userId;
}
}
var deleteLinks = document.getElementsByClassName('deleteLink');
for (i = 0; i < deleteLinks.length; i++) {
addEventListener('click',deleteUser,false);
}
解决方案
忘记正确附加监听器,应该是
deleteLinks[i].addEventListener('click',deleteUser,false);
使用querySelectorAll而不是getElementsByClassName完成答案
function deleteUser(event){
event.preventDefault();
var userId = this.getAttribute('data-id');
if(confirm('Are you sure you want to delete this entry?')){
window.location.href = 'delete.php?id=' + userId;
}
}
var deleteLinks = document.querySelectorAll('.deleteLink');
for (i = 0; i < deleteLinks.length; i++) {
deleteLinks[i].addEventListener('click',deleteUser,false);
}
推荐阅读
- java - 如何将 JavaFX12 应用程序部署到具有相同代码库的多个平台
- r - 如何将 isTRUE 翻译成 Rcpp
- node.js - 为什么不写两个不同的文件?
- css - 为什么要使用这个 Boostrap 选择器?
- google-apps-script - 如何从 Google 电子表格中的给定单元格中提取和引用数据?
- blockchain - err="合约创建代码存储用完gas"
- javascript - 检索数组 - 键值对 - 无法读取未定义的属性“DisplayName”
- powerbi - 通过 API 响应分页不会返回 Power BI 中的所有行
- python - tf.contrib.framework.nest.flatten_dict_items() 在 Tensorflow 2.0 中的等价物是什么?
- mysql - mysql用0替换nan,找不到任何文档