我想比较-180到180之间的验证范围。 如果number小于-180且大于180,那么它应该显示错误。
我在下面写了代码 -
if((markerPoint[0] && parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) {
this.latlngError.push("Invalid coordinates");
} else {
this.isLanLngValid = true;
}
但是这回到了不正确的比较。
答案 0 :(得分:0)
您可以改为使用Math.abs():
if (markerPoint[0] && Math.abs(parseInt(markerPoint[0],10)) > 180)
编辑:正如@TedHopp所指出的,当前代码的可见问题似乎是运算符优先级。 &&
有higher precedence而不是||
。使用Math.abs()可以绕过问题。
如果这不能解决问题,则需要提供更多代码进行调试。
答案 1 :(得分:0)
我想比较-180到180之间的验证范围
对于介于-180和180之间的数字,数字必须大于-180且小于180,因此请更改比较。
if(markerPoint[0] && parseInt(markerPoint[0],10) > -180 && parseInt(markerPoint[0],10) < 180) {
答案 2 :(得分:0)
试试这个JsFiddle
var answer = prompt("type a number");
func();
function func() {
if (answer>=-180&&answer<=180) {
alert("Yes! We made it!");
} else {
answer = prompt("Invalid try agian");
func();
}
}
答案 3 :(得分:0)
将以下代码替换为肯定会有效。
if(markerPoint [0]&gt; = - 180&amp;&amp; markerPoint [0]&lt; = 180)
答案 4 :(得分:0)
您的代码存在的一个问题是,JavaScript &&
的优先级高于||
。 (参见表here。)因此,逻辑被评估为括号:
if (
(markerPoint[0] && parseInt(markerPoint[0],10) < -180)
||
parseInt(markerPoint[0],10) > 180)
{
您可以使用括号更改:
if(markerPoint[0] && (parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) {
如果if
是真值,并且评估范围超出范围[-180,180],那么markerPoint[0]
测试将通过。