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()调用,却可以改变这个全局变量,请问这是问什么?怎么才能通过点击事件改变这个全局变量的值? 展开
<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()调用,却可以改变这个全局变量,请问这是问什么?怎么才能通过点击事件改变这个全局变量的值? 展开
1个回答
展开全部
先是看了三遍代码也没明白为啥题主说“没改变”,后来恍然大悟,题主说没改变难道是通过看 p1 显示的啥么……
btn1.onclick = fun;
p1.innerHTML = boole;
下面那行都执行完了,p1 已经输出 true 了,那个时候你根本都没时间去点击 btn1 呢。难道说题主的手速已经超越了你电脑执行一行代码的速度?
想看结果好歹在方法里刷新一下显示的数据哇:
function fun(){
boole = !boole;
p1.innerHTML = boole;
}
追问
谢谢解答!但是我感觉我自己还存在这种惯性思维,导致我下次可能犯同样的错误,敢问大师这种错误的根本原因是什么我哪一部分知识不清楚导致的?
追答
写代码写的少……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询