javascript - 如何将 onClick 函数添加到动态填充的 div?
问题描述
我有带下拉菜单的引导导航栏:
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria haspopup="true" aria-expanded="false">GANRES</a>
<div class="dropdown-menu"></div>
</li>
</ul>
而且我有使用 TMDb API 为它们填充流派的函数:
async function getGenres() {
let url = "https://api.themoviedb.org/3/genre/movie/list?api_key=d80a54a0422d5fff6149c48741c8bece&language=en-US";
let response = await fetch(url);
let genres = await response.json();
let navbar = document.getElementsByClassName("nav-item dropdown");
navbar.innerHTML += `<div class="dropdown-menu">`;
let nav = document.getElementsByClassName("dropdown-menu");
for (let i = 0; i < genres.genres.length; i++) {
nav[0].innerHTML += `<a class="dropdown-item" href="#">` + genres.genres[i].name + `</a>`;
}
//This part should add separately to each element, but it does not work
//Here is error: Cannot set property 'click' of undefined at getGenres
for (let i = 0; i < genres.genres.length; i++) {
document.getElementsByClassName("dropdown-menu")[i].click = function () {
getmovies("discover/movie?api_key=d80a54a0422d5fff6149c48741c8bece&language=en-us&sort_by=popularity.desc&include_adult=false&include_video=false&page=1&with_genres=" + genres.genres[i].id);
};
};
}
项目本身是正常创建的。流派onClick 功能不起作用。
我试图将此函数加载为正文中的 onload,但它不起作用
解决方案
你可以很容易地做到这一点,这里是一个粗略的例子。for
所以只需在循环中添加事件侦听器
function generateLinks() {
var container = document.getElementById("containter");
var textNode;
var node;
[1,2,3,4,5].forEach(function(i) {
node = document.createElement("li");
node.setAttribute("id", i);
textNode = document.createTextNode("Hello" + i);
node.appendChild(textNode);
node.addEventListener("click", function() {
console.log("hello " + i)
});
container.appendChild(node);
});
}
generateLinks();
<div id="containter">
</div>
推荐阅读
- flutter - 需要在 TabBarView 中展开,但高度错误
- node.js - Angular 构建 - 未找到模块:错误:无法解析“控制台”
- typescript - 如何使用 TS 覆盖全局变量定义
- npm - 使用 Ansible npm 包安装 Angular
- azure-cognitive-search - Azure 搜索:Blob 元数据字段值未出现在索引数据中
- python - 如何使用异步循环遍历列表并调用列表对象自己的函数
- html - 我想让图像与文本中的文本左对齐
- php - 在 MySQL 数据库中查找与某个值关联的所有值
- node.js - 以编程方式将表添加到节点并使用 Sequelize 表达应用程序的最佳方法
- apache - 只允许访问一个目录 htaccess Apache 2.4