javascript - nodeList 仅给出最后一项 onClick
问题描述
我有一个 JSON 文件,它提供了每个国家/地区,我将它们放在<li>
标签中。
我想遍历这个列表,并在 every 上放置一个 click 事件<li>
,它确实如此。但无论我点击什么,我总是得到返回给我的列表中的最后一项。我错过了什么?
我想要我点击的项目返回。
function lists() {
var items = document.querySelectorAll('#Countries>ul>li');
for (i = 0; i < items.length; i++) {
var item = items[i];
item.onclick = function() {
console.log(item);
}
}
}
解决方案
您需要将item
函数onclick
作为参数传递。这是因为 for 循环内的函数将只考虑最后一项。
function lists() {
var items = document.querySelectorAll('#Countries>ul>li');
for (i = 0; i < items.length; i++) {
var item = items[i];
item.onclick = function(item) {
console.log(item);
}
}
}
您还可以使用 let 隔离范围:
function lists() {
let items = document.querySelectorAll('#Countries>ul>li');
for (let i = 0; i < items.length; i++) {
let item = items[i];
item.onclick = function() {
console.log(item);
}
}
}
推荐阅读
- dependency-injection - 尝试在 IDistributedEventHandler 中使用 DBContext 时出现 ObjectDisposedException
- python - 我如何检查 Python 是不是我的 Flask 应用程序已经在后台运行
- sockets - 在 Django 频道中使用 RedisChannelLayer 时,长 URL(包括密钥)会导致 unicode idna 编解码器解码错误
- java - Spring Config Server - 属性覆盖
- azure - 在 Azure 持久函数中设置 MaxOrchestrationActions
- python - 为什么在 Python3 中发生列表索引超出范围
- excel - VBA Excel - 取几列的范围
- php - Laravel 6.x PostgreSQL 插入问题?SQLSTATE[22P02]:无效的文本表示:7 错误
- mysql - 需要从两个 MySQL 表创建一个动态矩阵
- python - 如何在两列之间创建转换矩阵?