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

<body><pid="p1"></p><buttonid="btn1">请点击</button><scripttype="text/javascript">varp1=... <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()调用,却可以改变这个全局变量,请问这是问什么?怎么才能通过点击事件改变这个全局变量的值?
展开
 我来答
然后去远足
推荐于2017-12-16 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2429万
展开全部

先是看了三遍代码也没明白为啥题主说“没改变”,后来恍然大悟,题主说没改变难道是通过看 p1 显示的啥么……


btn1.onclick = fun;
p1.innerHTML = boole;

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


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

function fun(){
    boole = !boole;
    p1.innerHTML = boole;
}
追问
谢谢解答!但是我感觉我自己还存在这种惯性思维,导致我下次可能犯同样的错误,敢问大师这种错误的根本原因是什么我哪一部分知识不清楚导致的?
追答
写代码写的少……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式