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より大きい場合は常に、もう一方は間違っていません。ここで何が起こっているのでしょうか?アドバイスありがとうございます!

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コードよりも大きいASCIIコードを持っています1

を使用して数値に変換できますparseInt

parseInt(score1, 10)
于 2012-10-29T18:03:37.193 に答える