0
function alertString(str) {
    alert(str);
}

var str = "hello";
var alert_string = document.getElementById("alert_str");

// this can be removed with removeEventListener
// alert_str.addEventListener("click", alertString, false);

// but since I need to pass an argument
// alertString is wrapped within an anonymouse function
alert_string.addEventListener("click", function() {
    alertString(str);
}, false);

document.getElementById("remove_alert").onclick = function() {
    alert_string.removeEventListener("click", alertString, false);
};
<input type="button" id="alert_str" value="alert" />
<input type="button" id="remove_alert" value="remove alert" />

クリック イベント ハンドラーは匿名関数内にラップされているため、削除できません。

その関数への参照を作成して、アラート ボタンから alertString を削除するにはどうすればよいですか?

4

1 に答える 1

2

最も迅速で簡単な方法:

function alertStringWrapper() {
    alertString(str);
}
alert_string.addEventListener("click", alertStringWrapper, false);
于 2013-05-20T05:17:01.100 に答える