简单的javascript如果声明但无法找到哪里出错

Kla*_*ius 1 javascript jquery if-statement

简单但如果找不到问题的地方.如果值正确,为什么我的表单会返回警报?

if ( (($("#tip1").val()) > (value + tolerance)) || 
     (($("#tip1").val()) < (value + tolerance)) || 
     (($("#tip2").val()) < (value + tolerance)) || 
     (($("#tip2").val() ) > (value + tolerance))
   ){
       alert('STOP');
}
Run Code Online (Sandbox Code Playgroud)

如果我的值正确或不正确,请随时返回警报;

T.J*_*der 5

根据评论和更新的问题更新了答案:

根据名称"值"和"容差"以及下面的评论,我认为value - tolerance在进行<检查时您需要的是问题.例如:

var tip1Value = $("#tip1").val();
var tip2Value = $("#tip2").val();
if ( tip1Value > (value + tolerance) || 
     tip1Value < (value - tolerance) ||  // <== - not +
     tip2Value < (value - tolerance) ||  // <== - not +
     tip2Value > (value + tolerance)
   ){
       alert('STOP');
}
Run Code Online (Sandbox Code Playgroud)

例如,假设value450tolerance15,我们正在测试(test)值440:

// 440 should be fine if we want 450 -+ 15
test = 440;

// Your original test:
console.log(440 < (450 + 15)); // true => fails, we get the alert -- 440 < 465

// Corrected test:
console.log(440 < (450 - 15)); // false, the value is okay
Run Code Online (Sandbox Code Playgroud)

我也会把tip1和tip2的测试放在同一个顺序,以避免混淆,并可能给自己一个有意义的名称value + tolerancevalue - tolerance:

var tip1Value = $("#tip1").val();
var tip2Value = $("#tip2").val();
var maxValue = value + tolerance;
var minValue = value - tolerance;
if ( tip1Value > maxValue || 
     tip1Value < minValue ||
     tip2Value > maxValue ||
     tip2Value < minValue
   ){
       alert('STOP');
}
Run Code Online (Sandbox Code Playgroud)

原始答案:

你的陈述说:

如果#tip1的值是 > (value + tolerance)

要么

#tit1的价值是 < (value + tolerance)

要么

#tit2的价值是 > (value + tolerance)

要么

#tip的价值是 > (value + tolerance)

然后做警报.

只有其中一个必须是真实的以显示警报.因此,如果您看到警报,则表示这四个条件中的一个是真的.只有你可以找出哪一个.

当然,前两个条件可以组合成

(($("#tip1").val()) != (value + tolerance))
Run Code Online (Sandbox Code Playgroud)

猜测错误是什么:

  • 你并不想从三个不同的元素(使用值#tip1,#tip2,#tip),例如,也许那些至少有一个是一个错字(最后是相当可疑的).

  • 如果两个valuetolerance字符串(例如,如果你得到了他们.val()的代码,你没有显示),然后value + tolerance是做字符串连接,而不是加法.例如,"1" + "2""12".但是要发生这种情况,两者都必须是字符串而不是数字(1 + "2"3,"1" + 2也是3).

  • 根据名称"值"和"容差",在进行<比较时,您可能打算使用(value - tolerance).例如,如果目标是查看是否123(容差)范围内14,您需要tipvalue < (value - tolerance).