我的变量没有从true变为false,如何解决?

我正在使一个盒子能够循环显示两种颜色,但是所有变量都没有改变。 定义了所有变量,并且red1 = true和green1 = false。 红色和绿色是具有该颜色十六进制代码的变量。

document.addEventListener("keydown",skins)

function skins(e) {
    if (e.key == "w"){
        if (red1) {
            green1 = true;
            color = green;
            red1 = false;
        }
    }
    if (green1) {
        red1 = true;
        color = red;
        green1 = false;
    }
}

当我打开它时,该框为红色,但是当我按w时,什么也没有发生,当我检查控制台时,所有变量都没有改变。我尝试过将警报放入if(red1)中,并且可以正常工作。

fengzi3688 回答:我的变量没有从true变为false,如何解决?

var input = document.getElementById("btn");

input.addEventListener("keydown",skins)
 var red1 = true;
 var  color = "red";
 var  green1 = false;
 
function skins(e) {
    if (e.key == "w"){
        if (red1) {
            green1 = true;
            color = "green";
            red1 = false;
        }
     else if (green1) {
        red1 = true;
        color = "red";
        green1 = false;
      }
    }
   console.log(color);
}
<input type="text" id="btn">type w</input>

如果仅在按下键“ w”时才希望更改值。然后尝试以下代码。如果没有,请让我知道情况。

document.addEventListener("keydown",skins)

function skins(e) {
    if (e.key == "w"){
        if (red1) {
            green1 = true;
            color = green;
            red1 = false;
        }
     else if (green1) {
        red1 = true;
        color = red;
        green1 = false;
      }
    }

}
,

您遇到了一些范围问题。现在,您的示例中未定义red1和green1。如果值未定义,则将无法触发条件语句。但是为简单起见,我们假设您在代码的前面将red1定义为true,将green1定义为false。如果用户按下w键,则代码将达到第一个条件,并将red1切换为false,将green1切换为true。 (我现在忽略了颜色变量。)

然后代码继续执行下一个条件,现在green1为true,因此它将red1设置为true并将green1设置为false。您可能要考虑在red1 true条件之后添加return。返回值退出该函数,阻止其达到下一个条件。

document.addEventListener("keydown",skins)

function skins(e) {
    if (e.key == "w"){
        if (red1) {
            green1 = true;
            color = green;
            red1 = false;
            return;
        }
    }
    if (green1) {
        red1 = true;
        color = red;
        green1 = false;
    }
}
本文链接:https://www.f2er.com/3159561.html

大家都在问