javascript - 如何使用javascript为页面中的所有元素添加事件监听器,它们的ID在我的数组中
问题描述
我的页面中有带有 ID 的元素。我还有一个数组,其中包括 Id。
const locations = [{
"location": "hauptbahnhof",
"color": "Magenta"
},
{
"location": "Kröpke",
"color": "Yellow"
},
{
"location": "KröpckeUhr",
"color": "Green"
},
]
for (var i = 0; i < locations.length; i++) {
var ids = locations[i].location;
console.log(ids);
}
<div id="container">
<div id="hauptbahnhof">Hauptbahnhof</div>
<div id="Kröpke">Kröpke</div>
<div id="KröpckeUhr">Kröpcke Uhr</div>
<div id="Drumstreet">Drumstreet</div>
</div>
它给了我所有的位置。现在我想为我的页面中的所有对象添加事件监听器,其中数组包含使用 javascript 的 ID。
解决方案
通过 id 获取元素并在其上添加事件侦听器功能
element.addEventListener("click", myFunction);
出于演示目的,相应的 div 在单击时将具有红色。
评论后编辑
通过 id 搜索后检查元素是否存在:
const element = document.getElementById(locationId)
if (element) {
// add listener
}
const locations = [{
"location": "hauptbahnhof",
"color": "Magenta"
},
{
"location": "Kröpke",
"color": "Yellow"
},
{
"location": "KröpckeUhr",
"color": "Green"
},
{
"location": "nonExistingElement",
"color": "Green"
},
]
for (var i = 0; i < locations.length; i++) {
var locationId = locations[i].location;
console.log(locationId);
const element = document.getElementById(locationId)
if (element) {
element.addEventListener("click", myFunction);
function myFunction() {
element.style.color = "red";
}
} else {
// ID is not in the html elements
}
}
<div id="container">
<div id="hauptbahnhof">Hauptbahnhof</div>
<div id="Kröpke">Kröpke</div>
<div id="example">no event on this</div>
<div id="KröpckeUhr">Kröpcke Uhr</div>
<div id="Drumstreet">Drumstreet</div>
</div>
推荐阅读
- android - Superpowered Sdk-将更改的音频效果文件写入外部存储
- vue.js - 在 NativeScript 中,为什么我会收到错误“无效字符 @”?
- angular - Visual Studio 代码显示错误“找不到名称日期”
- c# - 比较两个自定义对象时,Nunit Assert.AreEqual() 失败
- typescript - 如何设置模型类型 n pouchdb upsert?
- python - 电场线
- linux - 如何在linux中创建一个可执行文件(.sh)来复制和粘贴文件
- predictionio - 是否可以在 PredictionIO 中获取用户事件而不是建议
- sql - Oracle Apex 刷新图表不起作用
- javascript - Google Analytics - 使用 gtag js 手动注册综合浏览量