我想将事件监听器添加到 html 元素。但是当元素不存在时它会产生 js 错误。该元素仅存在于某些页面上。
// (A) ATTACH CLICK LISTENER ON PAGE LOAD
window.addEventListener("load", () => {
document.getElementById("download_mp3j_0").addEventListener("click", doSomething);
});
// (B) THE USUAL FUNCTION
function doSomething () {
// (B1) DETACH CLICK LISTENER
var div = document.getElementById("download_mp3j_0");
div.removeEventListener("click", doSomething);
// (B2) EXTRA - CHANGE THE TEXT IF YOU WANT
div.innerHTML = "Downloading";
// (B3) DO YOUR PROCESSING HERE
alert("Downloading!");
// (B4) RE-ENABLE AFTER PROCESSING IF YOU WANT
// div.addEventListener("click", doSomething);
}
Run Code Online (Sandbox Code Playgroud)
基本上,该功能是在单击按钮后将其删除,以避免多次重复单击。
我希望函数 doSomething 仅在元素download_mp3j_0存在时运行。