我有一個功能,用於向頁面添加按鈕。元素innerHTML擺脫事件監聽器
var count = 0;
function createOnclickFunction(number)
{
return function()
{
alert("This is button number " + number);
}
}
function addButton(data)
{
var newbutton = "..." //creates string from data
var element = document.getElementById("mydiv");
var children = element.children;
element.innerHTML = newbutton + element.innerHTML;
var currentCount = count;
children[0].onclick = createOnclickFunction(currentCount)
count++;
}
它基本上創建一個按鈕到基於一些數據的HTML。
我每次添加一個按鈕,我想它被添加到DIV #mydiv
的開始,因爲newbutton也不是一個Element
,但String
,我要修改的innerHTML將其添加到啓動的#mydiv
。
之後,我必須通過獲取#mydiv
的第一個子元素來獲取元素(添加一個onclick)。
但是,在向我的頁面添加第二個按鈕後,第一個onclick按鈕不再有效。
如果我修改我的代碼只添加一個按鈕,一切工作正常。
所以現在只有最上面的按鈕(最新添加的按鈕)可以被點擊。
我該如何解決這個問題?
我也試過用element.firstChild
而不是element.children[0]
。
在此先感謝大家!
編輯:
這裏是一個的jsfiddle:(正如你所看到的作品是stackoverflow
唯一的按鈕)
https://jsfiddle.net/7c7gtL26/
切勿使用'innerHTML'插入內容。而你的代碼是錯誤的,在開始時沒有辦法「它工作正常」。 – Oriol
你可以爲這個問題創建一個小提琴嗎? – Prashant
@Oriol雖然這會影響嗎? –