當您替換innerHTML時,您將刪除所有以前的事件處理程序。
在純JS,你可以發現在div點擊,但你需要檢查事件:
辦法是內聯,因爲你產生在P反正
var arry = [];
arry = GM_listValues();
for (var i = 0; i < arry.length; i++) {
document.getElementById('moje_menu').innerHTML += '<p id="' + arry[i] + '" onclick="delete(this)">' + arry[i] + '</p>';
}
你可以th Ë修改刪除(對於功能較差的名字,因爲刪除是一個內置的方法)來處理傳入的段落
例子:
function removeP(p) {
console.log(p.id);
}
var arry = ["a","b","c"];
for (var i = 0; i < arry.length; i++) {
document.getElementById('moje_menu').innerHTML += '<p id="' + arry[i] + '" onclick="removeP(this)">' + arry[i] + '</p>';
}
<div id="moje_menu"></div>
在jQuery中,你可以很容易地代表:
function removeP() {
console.log(this.id);
}
$(function() {
var arry = ["a","b","c"];
var $menu = $('#moje_menu');
for (var i=0; i<arry.length; i++) {
$menu.append($('<p/>',{"id":arry[i], "text":arry[i]}))
}
$menu.on("click","p",removeP);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="moje_menu"></div>
不應該使用+ =而不是= – krisph
@krisph它沒關係 - a = a + b與a + = b相同。當您替換innerHTML時,您的事件處理程序全部被刪除。這就是這個問題的原因 – mplungjan
只是說,使用更少的空間和更少的空間總是更好=]沒有調試來給出實際的答案。 =/ – krisph