"单击"动态创建的链接不会被触发

时间:2016-12-02 16:27:25

标签: javascript dom

我想动态添加一个链接并附加" 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 ;;我该如何解决这个问题?

1 个答案:

答案 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);