0

所以这是我的代码:

var score1 = $(this).attr('data-score1');
var score2 = $(this).attr('data-score2');

if (score1 < score2) {
  // do some
}
if (score2 > score1) {
  // do something else
}

现在,只要两个变量都为 < 或都 > 100,这可以正常工作,但是只要这些变量中的一个大于 100 而另一个不是错误的 if 语句被触发。这里到底发生了什么?感谢您的任何建议!

4

2 回答 2

7

利用parseInt()

属性会抛出字符串。所以当你尝试比较它们时......你实际上是在比较

"100" > "90" 而不是100 > 90 ..使用带有基数的parseInt()应该可以解决您的问题..

var score1 = parseInt( $(this).attr('data-score1') , 10);
var score2 = parseInt( $(this).attr('data-score2') , 10);

if (score1 < score2) {
  // do some
}
else if (score2 > score1) {
  // do something else
}

正如@naveen 建议的那样,您也可以这样做

var score1 = +$(this).attr('data-score1');
var score2 = +$(this).attr('data-score2');
于 2012-10-29T18:03:20.810 回答
3

您正在将值作为字符串进行比较。字符串“90”以 开头9,其 ascii 代码大于1

您可以使用将其转换为数字parseInt

parseInt(score1, 10)
于 2012-10-29T18:03:37.193 回答