gpt4 book ai didi

javascript - 使用 addEventListener 和 getElementsByClassName 传递元素 id

转载 作者:搜寻专家 更新时间:2023-11-01 04:53:41 24 4
gpt4 key购买 nike

我正在从一个 JSON 文件中定义一个项目列表,并在网页上显示该列表。目的是让用户单击该列表中的任何项目以显示有关该项目的更多信息(保存在同一 JSON 文件中的信息)。

该列表的所有项目都是同一类的成员,并且每个项目都有一个从 JSON 文件定义的唯一 ID。 HTML 看起来像这样:

<ul>
<li class="menu" id="bob">Robert Smith</li>
<li class="menu" id="jane">Jane Doe</li>
<li class="menu" id="sue">Susan Carter</li>
</ul>

我打算使用类似

的东西

var userSelection = document.getElementsByClassName('menu');

配合

userSelection.addEventListener('click', myFunctionToPrintDetails());

但我不确定如何将 id 从事件监听器传递到打印函数以确定要打印的详细信息。

我在 HTML/CSS 方面有很多经验,但在 JSON/AJAX 方面经验很少,所以我可能会完全退步。如果有更合适的方法来完成这项工作,我愿意接受反馈。

我尝试了两个答案,但都没有用。当我将 userSelection.length 记录到控制台时,我得到 0;当我登录 userSelection 时,我得到:

HTMLCollection(0)
> sue: li#sue.menu
length: 3
> jane: li#jane.menu
> bob: li#bob.menu
> 0: li#bob.menu
> 1: li#jane.menu
> 2: li#sue.menu

最佳答案

codepen demo

var userSelection = document.getElementsByClassName('menu');

for(var i = 0; i < userSelection.length; i++) {
(function(index) {
userSelection[index].addEventListener("click", function() {
console.log("Clicked index: " + index);
})
})(i);
}

正如@torazaburo 在评论中指出的那样,如果您要支持的浏览器符合 ECMAScript 6 (ES6)(JavaScript 的最新版本),您可以使用以下命令。

var userSelection = document.getElementsByClassName('menu');

for(let i = 0; i < userSelection.length; i++) {
userSelection[i].addEventListener("click", function() {
console.log("Clicked index: " + i);
})
}

关于javascript - 使用 addEventListener 和 getElementsByClassName 传递元素 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com