我想动态添加一个链接并附加" onclick"事件就可以了。这是我所拥有的简化版本:
for (var i = 0; ....) {
var a1 = document.createElement("a");
a1.innerHTML = "My link123";
a1.addEventListener("click", function(event) {
myFunc(someArray[i].property1, event);
// alert("test123");
});
var p1 = document.createElement("p");
var sp1 = document.createElement("span");
//..........
divContainer.innerHTML += a1.outerHTML + p1.outerHTML + sp1.outerHTML;
}
但它并没有触发"点击"当我点击它时发生的事件。
更新:
创建之后,我点击它,我得到:myFunc(someArray[i].property1, event); -- Cannot read property 'property1' of undefined
我想这与clojures的评估方式有关。
UPDATE2
我试过这个:
a1.addEventListener("click", function(event) {
(function(i2){
myFunc(i2, event);
})(myArray[i].property1);
});
但它在运行时说我点击它" property1没有被定义&#34 ;;我该如何解决这个问题?
答案 0 :(得分:2)
divContainer.innerHTML += a1.outerHTML + p1.outerHTML + sp1.outerHTML;
您正在将DOM节点(包括新节点和已在divContainer
中的节点)序列化为HTML,其中不包含事件侦听器,然后从HTML创建新的DOM节点。
请改为使用appendChild
和朋友。
divContainer.appendChild(a1);
divContainer.appendChild(p1);
divContainer.appendChild(sp1);