布尔值不适用于 If 语句(Javascript)
Posted
技术标签:
【中文标题】布尔值不适用于 If 语句(Javascript)【英文标题】:Boolean Is Not Working With If Statement(Javascript) 【发布时间】:2021-10-16 09:36:20 【问题描述】:我正在构建这个塔罗牌程序,但布尔语句有问题。我只想显示何时执行 TRUE 语句,但由于某些原因,该程序也在执行 FALSE 语句,并且给了我一个我不想要的空白页。这是我的项目https://jsfiddle.net/4vsyxj3g/的链接。
这是我想要完成的。塔罗牌大约有72张牌,一张牌可以是过去、现在或未来,但不能重复。例如,一张牌不能同时在过去、现在或将来。程序必须为过去、现在和未来选择一张独特的卡片。不管怎样,谢谢大家的帮助。
代码如下:
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
【问题讨论】:
您已将let x = true
设置为始终为真。
【参考方案1】:
您的代码非常好。如果你不断地重新加载你的页面,它实际上会给你一个渲染的版本。这里的问题是,如果你得到的数字相等,你就什么也不做。
如果您有一个 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
【讨论】:
它适用于您的代码。这是链接jsfiddle.net/3dy7ano9。我使用 let x= true 是因为我认为它可以与布尔语句一起使用,但它没有。以上是关于布尔值不适用于 If 语句(Javascript)的主要内容,如果未能解决你的问题,请参考以下文章