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

时间:2014-06-26 08:49:35

标签: javascript jquery if-statement

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

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

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

2 个答案:

答案 0 :(得分:5)

根据评论和更新的问题

更新了答案

基于名称&#34;值&#34;和&#34;宽容&#34;以及下面的评论,我认为在进行value - tolerance检查时,您需要<。 E.g:

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');
}

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

440

我还会将tip1和tip2的测试按顺序排列,以避免混淆,并且可能为// 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 value + tolerance提供一个有意义的名称:

value - tolerance

原始回答

你的陈述说:

如果#tip1&#39; s值为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'); }

#tip1&#39; s值为> (value + tolerance)

#tip2&#39; s值为< (value + tolerance)

#tip的值为> (value + tolerance)

..然后做警报。

只有一个必须为true才能显示提醒。因此,如果您正在查看警报,则表示这四个条件中的一个为真。只有你能找到哪一个。

当然,前两个条件可以合并到

> (value + tolerance)

猜测错误是什么:

  • 您并不想使用来自三个不同元素((($("#tip1").val()) != (value + tolerance)) #tip1#tip2)的值,例如,或许其中至少有一个是一个错字(最后一个很可疑)。

  • 如果#tipvalue都是字符串(例如,如果您在代码中从tolerance获取了这些字符串,那么您还没有显示),然后.val()正在进行字符串连接,而不是添加。例如,value + tolerance"1" + "2"。但是要发生这种情况,两者必须是字符串而不是数字("12"1 + "2",而3也是"1" + 2)。

  • 根据名称&#34;值&#34;和{&#34;容忍&#34;,在进行3比较时,您可能打算使用<。例如,如果目标是(value - tolerance)是否在12的{​​{1}}(容差)范围内,那么您需要3

答案 1 :(得分:1)

一种可能性是,$("#tip1").val()将返回字符串类型。 。因此,您应该使用parseIntparseFloat将该sting转换为数字。

var tip1Value = parseFloat($("#tip1").val());
var tipValue = parseFloat($("#tip").val());
var tip2Value = parseFloat($("#tip2").val());;
if (tip1Value > (value + tolerance) || tip1Value < (value + tolerance)) || tip2Value < (value + tolerance)) || tipValue > (value + tolerance)) {
    alert('STOP');
}