如何让函数仅在首次点击时执行?解决window.onclick重复触发问题
解决函数仅首次点击执行的几种方法
方法一:用标志变量控制执行
设置一个变量标记函数是否已执行,每次点击时先判断状态,未执行才运行函数并更新标记:
let hasExecuted = false; window.onclick = function changeURL(){ if (!hasExecuted) { var user = document.getElementById("user").value; document.getElementById("link").setAttribute("src", "indexT.html?ProofLoginDataRegistration="+ user); hasExecuted = true; } }
方法二:利用事件监听的once选项(推荐现代浏览器)
用addEventListener绑定点击事件,设置once: true,事件触发一次后会自动解绑,无需手动处理:
window.addEventListener('click', function changeURL(){ var user = document.getElementById("user").value; document.getElementById("link").setAttribute("src", "indexT.html?ProofLoginDataRegistration="+ user); }, { once: true });
方法三:执行后手动移除事件监听
先定义具名函数,执行完成后调用removeEventListener移除自身监听:
function changeURL(){ var user = document.getElementById("user").value; document.getElementById("link").setAttribute("src", "indexT.html?ProofLoginDataRegistration="+ user); window.removeEventListener('click', changeURL); } window.addEventListener('click', changeURL);
补充:你之前遇到window.onload绑定多个函数无法共存的问题,是因为直接用
window.onload = 函数会覆盖之前的绑定。其实可以用window.addEventListener('load', 你的函数)来绑定多个onload事件,多个函数都会按顺序触发,不用改用onclick。
内容的提问来源于stack exchange,提问作者Mario Cervantes Salvatori
相关产品推荐
相关产品推荐

