简体   繁体   English

如何将事件添加到仅在javascript中动态生成的每个元素

[英]How to add event to each element generated dynamically in javascript only

i am creating 'li' element dynamically through a loop and im getting problem in assigning event to each element that is generated dynamically.I want to do assign event onclick on each li element that is generated. 我正在通过循环动态创建``li''元素,并且在将事件分配给动态生成的每个元素时遇到问题。我想对生成的每个li元素分配事件onclick。

Here is the code: 这是代码:

var not = [{
  "event": "It's your friend's Birthday. Wish him luck!!!",
  "view": "unread",
  "status": "read",
  "image": "<img src='cake.jpg' style='height:80px';'width:80px'>"
}]

var ids = ["id1", "id2", "id3", "id4", "id5"];
var lis = new Array(10);
var i = 0;

for (i; i < not.length; i++) {
  lis[i] = document.createElement("li");
  var obj = document.createTextNode(not[i].event);
  lis[i].appendChild(obj);
  document.body.appendChild(lis[i]);
  lis[i].setAttribute('id', ids[i]);
  var x = document.getElementById(ids[i]);
  x.addEventListener("click", func('ids[i]'));
  document.body.appendChild(ids[i]);

}

function func(a) {
  document.getElementById(a).innerHTML = "hello";
}

similarly there are 5 more not objects. 同样,还有5个非对象。

Try replacing 尝试更换

x.addEventListener("click", func());

by 通过

x.addEventListener("click", func);

If you use func() you are calling the function and send the return value of func() , instead of passing the function itself. 如果使用func() ,则将调用函数并发送func()的返回值,而不是传递函数本身。

Try using .bind , to bind value to event listener. 尝试使用.bind将值绑定到事件侦听器。 When you do 当你做

x.addEventListener("click", func('ids[i])');
  1. You are assigning return value of func to event listener. 您正在将func返回值分配给事件侦听器。
  2. 'ids[i]' is not a variable. 'ids[i]'不是变量。 Its a string. 它是一个字符串。

Replace following to: 将以下内容替换为:

x.addEventListener("click", func.bind(ids[i]));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将事件添加到每个动态生成的元素中,以及如何仅从JAVASCRIPT中的json访问数据 - How to add an event to each of the dynamically generated element and access data from json in JAVASCRIPT only 向动态生成的元素添加事件 - Add event to dynamically generated element 如何在动态创建的元素中添加Javascript事件? - How to add Javascript event in dynamically created element? 向循环内动态生成的 DIV 添加点击事件,显示弹出 window 并在 Javascript 中为每个 DIV 提供不同的文本 - Add a click event to dynamically generated DIVs inside a loop that show a popup window with different text for each of them in Javascript 在 Javascript 中动态创建的元素上添加点击事件 - Add click event on a dynamically created element in Javascript 向javascript中的每个元素添加简单事件 - Add simple event to each element in javascript 如何使用 angular 中的 setAttribute 将鼠标悬停事件添加到动态生成的 html 元素 - How to add mouseover event to a dynamically generated html element by using setAttribute in angular 如何在JavaScript中将弹出窗口添加到动态生成的圈子中 - How to add popups to dynamically generated circles in javascript 事件未在动态生成的元素上触发 - Event not triggering on dynamically generated element 如何为 JavaScript 生成的 HTML 笔记添加事件? - How to add a event for an HTML note generated by JavaScript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM