Javascript编号比较失败 [英] Javascript number comparison fails
问题描述
我试图了解我的错误在哪里,因为JS在数学上失败是不可能的!
I'm trying to understand where is my error, because it's not possible that JS fails in math!
在HTML表单上我有一个select和9个文本输入。
然后,在JS上我比较输入的文字。
On the HTML form I have a select and 9 text input. Then, on the JS I compare the text entered.
我的问题如下:
如果我写上
My problem is the following: If I write on
new_da3 = 1400
new_a3 = 1900
JS会说ok3。
如果我写的话
new_da3 = 1900
new_a3 = 1400
JS会说no3 !
但如果我写在
new_da3 = 1500
new_a3 = 800
JS WILLL SAY ok3!
the JS WILLL SAY ok3!
为什么? 1500不大于800吗?
Why? Isn't 1500 bigger than 800?
谢谢!
HTML:
<form>
<select id="new_nrp" onchange="selNrP(this.value);" style="background-color:#F00; color:#FFF">
<option value="" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<?php
for($i=1; $i<=3; $i++){
print '<input type="text" size="5" maxlength="5" id="new_da'.$i.'">
<input type="text" size="5" maxlength="5" id="new_a'.$i.'">';
}
?>
<input type="submit" class="buttongreen" onClick="test()" value="Try the test function!">
</form>
JS
function test(){
var new_da1 = document.getElementById('new_da1').value
var new_a1 = document.getElementById('new_a1').value
var new_da2 = document.getElementById('new_da2').value
var new_a2 = document.getElementById('new_a2').value
var new_da3 = document.getElementById('new_da3').value
var new_a3 = document.getElementById('new_a3').value
var new_nrp = document.getElementById('new_nrp').value
switch(new_nrp){
case '3':
if(new_a2 < new_da3 && new_da3 <= new_a3){
alert('ok3')
} else {
alert('no3')
return
}
case '2':
if(new_a1 < new_da2 && new_da2 <= new_a2){
alert('ok2')
} else {
alert('no2')
return
}
case '1':
if(new_da1 <= new_a1){
alert('ok1')
} else {
alert('no1')
return
}
break;
default:
alert("Why are you here?");
return;
}
}
推荐答案
因为你在比较字符串而不是整数。使用 parseInt
将值显式地转换为整数。
Because you're comparing strings, not integers. Use parseInt
to explicitly cast your values as integers.
这基本上就是你在做什么: < a href =http://jsfiddle.net/j08691/QajzL/ =noreferrer> jsFiddle示例
Here's essentially what you're doing: jsFiddle example
待办事项转换,将变量更改为:
To do the conversion, change your variables to something like:
var new_da1 = parseInt( document.getElementById('new_da1').value, 10);
(假设它们都是整数)
这篇关于Javascript编号比较失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!