布尔值不适用于 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
}
我正在构建这个塔罗牌程序,但我在处理布尔语句时遇到了问题。我只想显示何时执行 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
}