如果条件没有得到满足应该是

时间:2015-10-08 18:30:30

标签: javascript

var userchoice;
var compchoice = parseFloat(Math.ceil(Math.random()*10));
console.log(compchoice);





function guess () {
    if (compchoice === document.getElementById("userguess").value) {
        alert("You guessed it!");
        location.reload()
    }
    else if (document.getElementById("userguess").value > compchoice) {
        alert("That was a little high, try again")
    }
    else if (document.getElementById("userguess").value < compchoice) {
        alert("That was a little low, try again")
    }
    else if (isNaN(document.getElementById("userguess").value)) {
        alert("Guess a number bro")
    }

}

所以这是我的代码。我是一个初学者,只是搞乱概念。现在问题是,如果你正确地猜测了数字,if中的第一个guess()语句应该运行,但事实并非如此。另一个else if运行,所以我对问题是什么感到难过。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

这将返回一个字符串:

document.getElementById("userguess").value

这将返回一个数字:

parseFloat(Math.ceil(Math.random()*10))

由于类型不同,===将返回false。一些解决方案:

  • 使用==
  • 进行比较
  • 将字符串转换为数字:+str
  • 将数字转换为字符串:''+num

答案 1 :(得分:0)

compchoice === document.getElementById("userguess").value评估为false,因为===运算符正在将floatstring进行比较。

您可以通过将用户猜测解析为浮动或使用==运算符来解决此问题。

答案 2 :(得分:0)

The === operator不仅仅检查值相等,而且还键入相等。所以这将是错误的:

compchoice === document.getElementById("userguess").value

因为compchoice是数字数据而.value是sting数据。您可以通过使用非严格比较运算符立即解决问题:

compchoice == document.getElementById("userguess").value

这会比较不考虑类型的值,因此1'1'之类的内容会相等。