如果数字在两个数字之间,加减 10,添加 class。

7

http://jsfiddle.net/kM8xE/2/

如果我有一些 div 元素

<div class="value">15</div>
<div class="value2">20</div>​

以及jQuery

var actual = $(".value").html();
var comparison = $(".value2").html();

如果.value2的HTML值在.value的HTML值加减10之间,即例如5到25之间,您如何将.isbetween类添加到它上面?

我不是很擅长,但我已经尝试过了,没有成功。

if(parseInt(actual)-10 <= parseInt(comparison) <= parseInt(actual)+10){
$(".value2").addClass("isbetween");
}

小提琴似乎工作正常,因为value2类被突出显示。我读了你的帖子几遍,但仍不太确定哪里出了问题(一个好的经验法则是:如果你必须说“它不起作用”,那么就重写问题。对于这种陈述,人们总会问:“具体来说应该发生什么?”)。 - halfer
3个回答

18
 if (Math.abs(actual - comparison) <= 10) {
    //they're within 10
 }

comparison.addClass('isbetween'); - Z. Zlatev

3
这样做不起作用的原因是您不能像这样链接比较:
5 < x < 10

在JavaScript(以及其他类C语言语法的语言)中,您需要进行两个单独的比较,并使用布尔与运算符(&&)将这些比较链接在一起:
var actualValue = parseInt(actual);
var comparisonValue = parseInt(comparison);

if(actualValue - 10 <= comparisonValue && comparisonValue <= actualValue + 10) {
    $(".value2").addClass("isbetween");
}

此外,不要重复自己。只需进行一次转换,并将其存储在本地变量中。这使得代码更易读。
通过使用一个叫做绝对值的概念,这可以变得更简单。然后,您只需计算差异,并查看其绝对值是否小于或等于十。
var delta = Math.abs(parseInt(actual) - parseInt(comparison));

if(delta <= 10) {
    $(".value2").addClass("isbetween");
}

Python是我知道的唯一一种编程语言,可以将5 < x < 10解释为5 < x and x < 10 - Dan D.
@DanD:https://dev59.com/questions/Hm855IYBdhLWcg3w5IrZ - Merlyn Morgan-Graham

0
你需要获取这两个值,将它们转换为数字,比较它们之间的绝对值差异,如果符合你的条件,则添加类。
var v1 = +$(".value").text();
var v2 = +$(".value2").text();
if (Math.abs(v1 - v2) <= 10) {
    $(".value2").addClass("isbetween");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接