如何解决单击浏览器中的按钮后,否则else语句不起作用
我想使用Javascript,DOM,HTML和CSS来构建游戏。我的逻辑如下:
步骤1:单击三个按钮可执行三个不同的功能,分别命名为random1,random2和random3。每个函数将生成两个随机数。 (假设1和2)。
步骤2:使用if
/ else-if
条件检查这些功能的结果。
第3步:如果所有按钮的返回值均等于1,它将发出警报(“玩家1获胜”)。 同样,如果值为2,则将提醒“玩家2获胜”。
第4步:如果值彼此不相等,则程序将要求刷新浏览器。
但是问题是,当我在浏览器中运行此代码时,只有else语句有效,而if / else-if不起作用。另一个问题:单击“第三个按钮”时,else语句在显示p/>标记中的随机数之前起作用。
//My Code//
var a;
function random1(){
a = Math.floor(Math.random()*2+1);
document.getElementById("para1").innerHTML = a;
return a;
}
let p1 = document.getElementById("myBtn1");
p1.addEventListener("click",random1);
var b
function random2(){
b = Math.floor(Math.random()*2+1);
document.getElementById("para2").innerHTML = b;
return b;
}
let t2 = document.getElementById("myBtn2")
t2.addEventListener("click",random2);
var c
function random3(){
c=Math.floor(Math.random()*2+1);
document.getElementById("para3").innerHTML = c;
return c;
}
let r3 = document.getElementById("myBtn3");
r3.addEventListener("click",check(a,b,c));
r3.addEventListener("click",random3);
function check(s,t,u){
if(s===1 && t===1 && u===1){
alert("Players 1 Wins");
}
else if(s===2 && t===2 && u===2){
alert("Player 2 Wins");
}
else{
alert("Refresh the Browser");
}
}
解决方法
问题出在这一行
r3.addEventListener("click",check(a,b,c))
该函数必须是侦听器,事件发生时浏览器将调用该侦听器。 要解决它,您可以执行类似的操作。
r3.addEventListener("click",() => {
check(a,c)
})
,
首先,您在alert"Refresh the Browser");
中有一个错字
缺少(
括号。
接下来,当您必须将参数传递给侦听器时,请使用匿名函数,该函数使用参数调用指定的函数,以便在事件发生时执行该函数。
您可以这样做。
r3.addEventListener("click",function(){
check(a,c));
}
或者,您也可以根据需要使用箭头功能。
r3.addEventListener("click",() => {
check(a,c));
}
最后也是最重要的是,代码的主要问题是eventListener的顺序。
r3.addEventListener("click",random3);
r3.addEventListener("click",c));
您可能要先调用random3
来设置c
的值,然后再检查,因此请保持在上面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。