首页 > 解决方案 > 在浏览器中单击按钮后,如果 else 语句不起作用

问题描述

我想使用 Javascript、DOM、HTML 和 CSS 构建游戏。我的逻辑如下:

第 1 步:单击三个按钮执行三个不同的功能,名为 random1、random2 和 random3。每个函数将生成两个随机数。(假设 1 和 2)。

ifStep2:使用/else-if条件检查这些函数的结果。

Step3:如果所有按钮的返回值都为1,则提示(“玩家1获胜”)。类似地,如果值为 2,则会提示“玩家 2 获胜”。

Step4:如果值不相等,程序会要求刷新浏览器。

但问题是,当我在浏览器中运行此代码时,只有 else 语句有效,而 if/else-if 无效。p/>另一个问题:单击“按钮三”时,else 语句在 < 标记中显示随机数之前起作用。

//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");
    }
}

标签: javascriptif-statementdom

解决方案


问题出在这一行

r3.addEventListener("click",check(a,b,c))

该函数必须是一个监听器,当事件发生时会被浏览器调用。要解决它,您可以执行类似的操作。

r3.addEventListener("click",() => {
   check(a,b,c)
})

推荐阅读