我试图在 num1 和 num2 之间进行比较:<form> <input placehoder="num1" type="text" id="num1"/> <input placehoder="num1" type="text" id="num2"/> <button type="button" id="comparar">Compara</button></form>问题是,直到我发现要声明输入将是带有let num1 = parseInt(document.getElementById("num1").value);系统工作的命令的数字,但有时它没有显示正确的警报。let compare = document.getElementById("comparar");function comparator(){ let num1 = parseInt(document.getElementById("num1").value); let num2 = parseInt(document.getElementById("num2").value); if ( num1 > num2){ alert('num1 higher'); }else if(num1 == num2){ alert('are equal'); } else{ alert('num2 higher') }}compare.addEventListener('click', comparator);有谁知道为什么不使用 parseInt 比较两个数字时会显示随机结果?,基本上它在比较什么?谢谢
4 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
您应该validate
在比较之前将 number1 和 number2 设置type="number"
为输入
示例parseInt("1a")
返回 1
如果输入 1a 和 1,则显示相等。
皈依舞
TA贡献1851条经验 获得超3个赞
如果没有 parseInt,您将比较两个“字符串”而不是两个“int”。
它不是随机的,它按 1、2、3、... 的顺序取数字,你会得到类似的结果:"2" > "10" ==> true
慕雪6442864
TA贡献1812条经验 获得超5个赞
如果不使用 parseInt,您将比较两个字符串。在 JavaScript 中,字符串按字母顺序与首字母进行比较,例如:“banana” > “apple” 将返回 true。如果第一个字母相等,则比较第二个字母,依此类推。大写字母优先于小写字母。
一只甜甜圈
TA贡献1836条经验 获得超5个赞
表单中的输入是字符串对象。在由数字组成的字符串对象上调用 parsInt 会将其转换为数字对象。
您可以使用 typeof 方法来检查类型。像这样:
var num1 = "1"
var num2 = 1
console.log(typeof(num1)) // Output -> string
console.log(typeof(num2)) // Output -> number
在此示例中,num1 是字符串对象,而 num2 是数字对象,即使它们具有相同的数字。
添加回答
举报
0/150
提交
取消