[英]How to add an event to each of the dynamically generated element and access data from json in JAVASCRIPT only
[英]How to add event to each element generated dynamically in javascript only
我正在通過循環動態創建``li''元素,並且在將事件分配給動態生成的每個元素時遇到問題。我想對生成的每個li元素分配事件onclick。
這是代碼:
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";
}
同樣,還有5個非對象。
嘗試更換
x.addEventListener("click", func());
通過
x.addEventListener("click", func);
如果使用func()
,則將調用函數並發送func()
的返回值,而不是傳遞函數本身。
嘗試使用.bind
將值綁定到事件偵聽器。 當你做
x.addEventListener("click", func('ids[i])');
func
返回值分配給事件偵聽器。 'ids[i]'
不是變量。 它是一個字符串。 將以下內容替換為:
x.addEventListener("click", func.bind(ids[i]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.