javascript - 如何在单击时获取 nodeList/HTML 集合中元素的索引

标签 javascript html css dom

假设我有一个由 var n = document.querySelectorAll('.exit') 产生的 NodeList,它看起来像 [img.exit, img.exit, img.exit, img.exit, img.exit, img.exit]

如您所知,它们都是具有相同类名的相同元素。

我怎么知道我从这个 NodeList 中点击了哪个元素?有没有办法获取事件目标的索引?

例如,如果我单击第三个元素,我希望看到 2 被打印出来(零索引)。


上下文是我正在创建一个应用程序,用户可以在其中创建和删除 session 。当用户单击 img.exit 图标时,我想删除整个 session 卡。但为此我需要知道它是哪个 session ,这就是为什么我想将每张 session 卡与其自己的 session ID 相关联。此 session ID 来自请求响应。我能够删除 View 中的卡片,但要在后端从我的日历模型中删除,我需要使用相应的 session ID 发出删除请求。

最佳答案

for 循环中创建您的事件监听器,使用 let 而不是 var 声明循环迭代器。

然后您将可以在事件处理程序中访问元素的索引:

var n = document.querySelectorAll('.exit');

for(let e = 0 ; e < n.length ; e++) {
  n[e].addEventListener('click', function() {
    alert(e);
  });
}
<p class="exit">Lorem</p>
<p class="exit">Ipsum</p>
<p class="exit">Hocus</p>
<p class="exit">Pocus</p>

关于javascript - 如何在单击时获取 nodeList/HTML 集合中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068955/

相关文章:

javascript - 为什么我的 React 组件没有在 foreach 中呈现我想要的内容,但会 console.log 数组?

javascript - 使用 JQuery 的 animate() 为 CSS 值设置动画

html - 使子元素(带填充)为父元素的 100% 宽度和高度

jquery - 变换 y 轴上的元素并将其左右对齐到外部元素

javascript - 如何区分对象文字和其他 Javascript 对象?

javascript - RobotFramework强制停止加载网页

html - 如何将div定位在图像的右侧?

javascript - IOS 在输入焦点上显示键盘

python - 在 HTML 中同时查找多个 "Text"选项

javascript - 如何将单选按钮的选择限制为一次