我想動態添加鏈接並在其上附加「onclick」事件。這裏是我有什麼簡化版本:「click」爲動態創建的鏈接沒有被觸發
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沒有定義」;我該如何解決這個問題?
如果您希望點擊事件保持不變,您應該'.appendChild(a1)',而不是複製生成的HTML。 –
這也將是相關的:[JavaScript閉合內部循環 - 簡單實用的例子](http://stackoverflow.com/q/750486/218196) –
@MikeMcCaughan,實際上我有其他的HTML元素動態創建,爲他們我正在使用「outerHTML」。我怎樣才能將這兩種方法結合起來? – Kooooro