布尔值不适用于 If 语句 (Javascript)

Boolean Is Not Working With If Statement(Javascript)

我正在构建这个塔罗牌程序,但我在处理布尔语句时遇到了问题。我只想显示何时执行 TRUE 语句,但由于某些原因,该程序也在执行 FALSE 语句,并且给我一个我不想要的空白页。这是我的项目 https://jsfiddle.net/4vsyxj3g/.

的 link

这是我想要完成的。塔罗牌大约有72张牌,一张牌可以是过去、现在或未来,但不能重复。例如,一张牌不能同时是过去、现在或未来。该程序必须 select 一张关于过去、现在和未来的独特卡片。不管怎样,谢谢你的帮助。

代码如下:

  let a = Math.floor(Math.random() * 3)
  let b = Math.floor(Math.random() * 3)
  let c = Math.floor(Math.random() * 3)

let x = true
console.log(a + " " + b + " " + c); 
 


if (x)
{

    if(a != b && a != c && a != c && b != c)

  {



    let randomPastCard = document.getElementById("textNamePast")
    randomPastCard.textContent = card[a].name
    
    let pastTextCard = document.getElementById("pastText")
    pastText.textContent = card[a].past
    
    
    var img = document.createElement("img");
    img.src = card[a].img;
    document.getElementById('pastTarotImg').appendChild(img);
    
    
    
    let randomPresentCard = document.getElementById("textNamePresent")
    randomPresentCard.textContent = card[b].name
    
    
    let presentTextCard = document.getElementById("presentText")
    presentTextCard.textContent = card[b].present
    
    var img = document.createElement("img");
    img.src = card[b].img;
    document.getElementById('presentTarotImg').appendChild(img);
    
    
    
    
    let randomFutureCard = document.getElementById("textNameFuture")
    randomFutureCard.textContent = card[c].name
    
    
    let futureTextCard = document.getElementById("futureText")
    futureTextCard.textContent = card[c].future
    
    var img = document.createElement("img");
    img.src = card[c].img;
    document.getElementById('futureTarotImg').appendChild(img);

  
console.log("true1");

    x = true

  }
<hh class="html">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="textNamePast"></div> 
    <div id="pastText"></div> <br>
    <div id="pastTarotImg"></div>

    
    <div id="textNamePresent"></div> 
    <div id="presentText"></div> <br>
    <div id="presentTarotImg"></div>



    <div id="textNameFuture"></div> 
    <div id="futureText"></div>    <br>
    <div id="futureTarotImg"></div>

    <br><br>

    
    <br><br>
    
    
    
<script src="tarot.js"></script>
</body>
</html>


}

else
{
    console.log("false");
    x = false

}

您的代码完全没问题。如果您不断重新加载您的页面,它实际上会给您一个呈现的版本。这里的问题是,如果你得到的数字相等,你就什么都不做。

如果你有一个 while 循环,它基本上运行直到你得到唯一的数字,然后使用它,你就可以解决这个问题。

您可以通过以下方式做到这一点:

while (a === b || a === c || a === c || b === c) {
  let a = Math.floor(Math.random() * 3)
  let b = Math.floor(Math.random() * 3)
  let c = Math.floor(Math.random() * 3)
}

// Then use those values like normal here

这应该可以解决您的问题。在事情的反面,我可以问一下。你为什么要这样做?:

let x = true;
if (x) {
  // all code here
}