我想检查输入框中的值是否等于变量。当我使用===时,它返回false,但是当我使用==时,如果两者相等,则返回true。
<input id="g1"></input> <button id="b" onclick="myFunction()">Try</button>
function myFunction() {
var d1;
d1 = Math.floor(Math.random()*100)
if( document.getElementById("g1").value == d1) {
document.getElementById("d").innerHTML = "Correct";
}
答案 0 :(得分:2)
这是因为JavaScript ==
可以将数字字符串与数字进行比较,而===
则不能。{/ p>
同样地,&#34;值&#34;属性your using返回一个与整数进行比较的字符串。您需要先使用parseInt
转换值。
parseInt(document.getElementById("g1").value) === d1
parseInt
要考虑的一些事项:
parseInt
会返回NaN
(即转换'bogus'
会返回NaN
。parseInt('2.1') == 2 // => true
。老实说,根据您的使用案例,使用==
是合适的,但我会添加一条评论,解释为何使用它。
答案 1 :(得分:1)
===意味着两个值都必须相等,但其中的数据类型相同,其中==表示它们只需要相等。所以例如,如果d1是一个保持值为2的字符串,并且g1是一个整数,同时使用===保持值2将不起作用,并且将返回false,因为两个数据都是不同的,即使它们具有相同的语法。
<input id="g1"></input> <button id="b" onclick="myFunction()">Try</button>
function myFunction() {
var d1 = 0;
d1 = Math.floor(Math.random()*100)
if( paseint(document.getElementById("g1").value) === d1) {
document.getElementById("d").innerHTML = "Correct";
}
答案 2 :(得分:0)
==是等于运算符 ===是一个身份运营商
例如,true == 1为true,因为true转换为1然后进行比较。但是,true === 1是假的。这是因为它没有进行类型强制。
除此之外,在您的情况下,我认为您想尝试将您的值转换为整数,然后进行比较。
答案 3 :(得分:0)
var string5 = '5'
var numb5 = 5
if (string5 == numb5) will return true
if (string5 === numb5) will return false
第二个变体也比较类型,因为字符串与数字类型不同,它是假的。