javascript - 无法在 Javascript 中重新分配变量
问题描述
下面,我将触发器重新分配为 false,但是当我运行它时,即使触发器变量为 false,button.onclick 函数仍将运行。不知道为什么会这样。如果触发器变为假,则需要停止该功能。
首先,我将变量 trigger 指定为 true。
我声明如果 x 小于 33,则该触发器应变为 false,因此 button.onclick 函数不应工作。
// sets the variables
var n = document.getElementById("number");
var b = document.documentElement.style;
var count = 0;
var x = 0;
var trigger = true;
if (trigger == true) {
button.onclick = function() {
count++;
n.innerHTML = count;
x = Math.floor(Math.random() * 100);
if (x < 33) {
b.backgroundColor = "red";
trigger = false;
} else {
b.backgroundColor = "black";
}
}
}
.root {
background-color: black;
}
#number {
color: white;
font-size: 100px;
font-family: Helvetica;
text-align: center;
margin: auto;
border-radius: 1%;
width: 30%;
margin-top: 15%;
}
#button {
display: block;
background-color: white;
outline: none;
font-size: 15px;
font-weight: bolder;
text-transform: uppercase;
padding: 10px 15px 10px 15px;
border-radius: 5%;
margin: auto;
margin-top: 50px;
font-family: Helvetica;
}
#rnum {
display: block;
text-align: center;
font-size: 15px;
color: white;
margin-top: 50px;
}
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
<div id="number" type="number"> 0 </div>
<div> <button id="button"> Click </button> </div>
解决方案
由于事件处理程序trigger
是true
附加到按钮元素的,因此它在执行中没有任何作用,因为事件处理程序中的代码不会评估条件if (trigger == true)
。
您需要if
在事件处理程序中移动条件
button.onclick = function () {
if (trigger == true) { //Moved statement in event handler
count ++;
n.innerHTML = count;
x = Math.floor(Math.random()*100);
if (x < 33) {
b.backgroundColor = "red";
trigger = false;
} else {
b.backgroundColor = "black";
}
}
}
// sets the variables
var n = document.getElementById("number");
var b = document.documentElement.style;
var count = 0;
var x = 0;
var trigger = true;
button.onclick = function() {
if (trigger == true) {
count++;
n.innerHTML = count;
x = Math.floor(Math.random() * 100);
if (x < 33) {
b.backgroundColor = "red";
trigger = false;
} else {
b.backgroundColor = "black";
}
}
}
.root {
background-color: black;
}
#number {
color: white;
font-size: 100px;
font-family: Helvetica;
text-align: center;
margin: auto;
border-radius: 1%;
width: 30%;
margin-top: 15%;
}
#button {
display: block;
background-color: white;
outline: none;
font-size: 15px;
font-weight: bolder;
text-transform: uppercase;
padding: 10px 15px 10px 15px;
border-radius: 5%;
margin: auto;
margin-top: 50px;
font-family: Helvetica;
}
#rnum {
display: block;
text-align: center;
font-size: 15px;
color: white;
margin-top: 50px;
}
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
<div id="number" type="number"> 0 </div>
<div> <button id="button"> Click </button> </div>
推荐阅读
- javascript - javascript 数字始终为 2 位小数,采用 typeof 数字格式
- c# - 为 Firefox (Geckodriver) 设置自定义配置文件目录
- android - 什么时候需要 kotlin 反射库?
- c - 当我尝试输入没有任何选项的故意信时,它会输出 3 个错误,但可能会出现一个错误
- c++ - 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐,可能有 operator new 等)
- typescript - 无法使用 Quill 2.0-dev3 创建自定义 BlockEmbed
- python - 计算滚动相关性给出的值远大于 1
- c# - UserManager.IsInRoleAsync 和 UserManager.GetRolesAsync 彼此不一致
- python - 我如何在没有本地 IP 或 localhost Python 的情况下连接客户端和服务器
- arangodb - 在 ArangoDB 中查询多个数据库