[英]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])');
func
to event listener. func
返回值分配给事件侦听器。 '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.