简单但如果找不到问题的地方。如果值正确,为什么我的表单会返回警报?
if ( (($("#tip1").val()) > (value + tolerance)) ||
(($("#tip1").val()) < (value + tolerance)) ||
(($("#tip2").val()) < (value + tolerance)) ||
(($("#tip2").val() ) > (value + tolerance))
){
alert('STOP');
}
如果我的值正确或不正确,请随时返回警报;
答案 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');
}
例如,假设value
为450
且tolerance
为15
,我们正在测试(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
)的值,例如,或许其中至少有一个是一个错字(最后一个很可疑)。
如果#tip
和value
都是字符串(例如,如果您在代码中从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()
将返回字符串类型。 。因此,您应该使用parseInt
或parseFloat
将该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');
}