这让我很难过。我正在创建一个简单的函数,当单击一个元素(掷骰子)时,它会生成1到6之间的随机数。
我想使用if语句执行某些操作,如果滚动的数字不为1或者之前滚动的数字不为6,例如:
if(dice !== 1 || lastRoll !== 6) { //Do something
但是,我似乎无法让OR条件在这里工作。 dice !== 1
和lastRoll !== 6
都可以独立工作,但如果在一个if语句中与OR条件结合使用,则无法正常工作。
我的完整功能如下:
var lastRoll = 0;
document.querySelector('.btn-roll').addEventListener('click', function() {
var dice = Math.floor(Math.random() * 6) + 1;
console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results
if(dice !== 1 || lastRoll !== 6) {
lastRoll = dice;
console.log('success');
}
else {
lastRoll = 0;
console.log('fail');
}
}
有人知道为什么OR条件不起作用吗?
更新:
为了测试我这样做了:
var hardCoded = 6;
if(dice !== 1 || hardCoded !== 6) {
所以我希望条件总是失败。但事实并非如此。它仍然不喜欢if语句。
答案 0 :(得分:1)
根据您的评论,我想您想要的是if(dice !== 1 && lastRoll !== 6)
答案 1 :(得分:0)
制作如下所示的if语句并检查, 首先,如果卷不是1,你需要做一些事情:
var lastRoll = 0;
document.querySelector('.btn-roll').addEventListener('click', function() {
var dice = Math.floor(Math.random() * 6) + 1;
console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results
if(dice !== 1) {
//dice can be 2,3,4,5,6
console.log('success');
}
else {
console.log('fail');
}
lastRoll = dice;
}
然后你需要最后一次滚动不是6:
var lastRoll = 0;
document.querySelector('.btn-roll').addEventListener('click', function() {
var dice = Math.floor(Math.random() * 6) + 1;
console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results
if(dice !== 1) {
//dice can be 2,3,4,5,6 and lastRoll can be 1,2,3,4,5,6
if(lastRoll !== 6) {
//dice can be 2,3,4,5,6 and lastRoll can be 1,2,3,4,5
console.log('success');
} else {
// dice can be 2,3,4,5,6 lastRoll = 6
console.log('fail');
}
}
else {
// dice can be 1 lastRoll can be 1,2,3,4,5,6
console.log('fail');
}
lastRoll = dice;
}
答案 2 :(得分:0)
@MeltingDog - 你的代码看起来很好。这种情况非常罕见。如果您在此处使用调试器暂停脚本:
var lastRoll = 0;
var condition;
document.querySelector('.btn-roll').addEventListener('click', function() {
var dice = Math.floor(Math.random() * 6) + 1;
console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results
debugger;
condition = (dice !== 1 || lastRoll !== 6);
console.log(condition);
if(dice !== 1 || lastRoll !== 6) {
lastRoll = dice;
console.log('success');
}
else {
lastRoll = 0;
console.log('fail');
}
});
在恢复之前在控制台中键入dice = 1和lastRoll = 6,您将看到“失败”消息。