嗨,我是javascript的新手.这是我的代码.我想要做的是当有人点击页面中的任何地方.将打开一个新窗口,但我希望这只发生一次,所以当有人再次点击正文时,该功能不应该运行.有什么建议?请不要jquery
<!DOCTYPE html>
<html>
<body onclick="myFunction()>
<script>
function myFunction() {
window.open("http://www.w3schools.com");
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Ger*_*ado 11
简短的解决方案:
<body onclick="myFunction(); this.onclick=null;">
Run Code Online (Sandbox Code Playgroud)
核实:
<button onclick="myFunction(); this.onclick=null;">This button works only once</button>
<button onclick="myFunction()">This button works always</button>
<script>
function myFunction() {
console.log("hello");
}
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做到这一点.
1.在脚本中将事件侦听器添加到body,然后单击一次删除.
<!DOCTYPE html>
<html>
<body>
<script>
document.body.addEventListener('click', myFunction);
function myFunction() {
window.open("http://www.w3schools.com");
document.body.removeEventListener('click', myFunction);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
2.有一个标志来检查函数是否已被调用.
<!DOCTYPE html>
<html>
<body onclick="myFunction()">
<script>
var isBodyClicked = false;
function myFunction() {
if(isBodyClicked === false){
window.open("http://www.w3schools.com");
document.body.removeEventListener('click', myFunction);
}
isBodyClicked = true;
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 5
使用“曾经”中的“选项”参数addEventListener
的方法是unironically足够使用一次函数的一个好方法。
function myFunction(){
console.log("hey")
}
document.body.addEventListener("click", myFunction,{once:true})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16139 次 |
最近记录: |