永发信息网

js 事件调用函数,无法修改全局变量?

答案:1  悬赏:0  手机版
解决时间 2021-02-15 04:43
  • 提问者网友:最美的风景
  • 2021-02-14 18:25
<body>
<p id="p1"></p>
<button id="btn1">请点击</button>
<script type="text/javascript">
var p1=document.getElementById('p1');
var btn1=document.getElementById('btn1');
var boole=true;
function fun(){
boole=!boole;
}
btn1.onclick=fun;
// fun();
p1.innerHTML=boole;
</script>
</body>

本人初学js(自学),遇见一个想不通的问题,请知道答案的好人,帮忙回答,本人感激不尽。
我的想法是:创建一个全局布尔类型开关变量(boole),想通过button点击事件调用fun函数来控制这个开关,但是无法改变这个全局的布尔值,但是通过单独的fun()调用,却可以改变这个全局变量,请问这是问什么?怎么才能通过点击事件改变这个全局变量的值?
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-02-14 19:03
先是看了三遍代码也没明白为啥题主说“没改变”,后来恍然大悟,题主说没改变难道是通过看 p1 显示的啥么……


btn1.onclick = fun;
p1.innerHTML = boole;下面那行都执行完了,p1 已经输出 true 了,那个时候你根本都没时间去点击 btn1 呢。难道说题主的手速已经超越了你电脑执行一行代码的速度?


想看结果好歹在方法里刷新一下显示的数据哇:

function fun(){
    boole = !boole;
    p1.innerHTML = boole;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯