25

ある数値が別の数値より大きいかどうかを検証するために、このjavascript関数があります

function validateForm() {
    var x = document.forms["frmOrder"]["txtTotal"].value;
    var y = document.forms["frmOrder"]["totalpoints"].value;

    if (x > y) {
        alert("Sorry, you don't have enough points");
        return false;
    }
}

なんらかの理由で動作していません。

私がそうするならば、私はalert(x)1300を得て、 alert(y)999を与えます

これは動作します...。

function validateForm() {
    var x = 1300;
    var y = 999;

    if (x > y) {
        alert("Sorry, you don't have enough points");
        return false;
    }
}
4

4 に答える 4

69

比較する前に、それらを数値に変換する必要があります。

試す:

if (+x > +y) {
  //...
}

また

if (Number(x) > Number(y)) {
  // ...
}

注: parseFloatおよび(整数の比較の場合、基数pareseIntを指定する必要があります)は空の文字列を提供し、比較は常にになり空の文字列を扱いたくない場合は、それらを使用できます。NaNNaNfalse0

于 2012-10-26T01:34:23.170 に答える
3

Numberコンストラクターを使用してnumberに「キャスト」できます。

var number = new Number("8"); // 8 number

parseInt組み込み関数を呼び出すこともできます。

var number = parseInt("153"); // 153 number
于 2012-10-26T01:36:39.740 に答える
3

文字列を比較しています。JavaScriptは、文字列の各文字のASCIIコードを比較します。

falseになる理由を確認するには、charCodesを確認してください。

"1300".charCodeAt(0);
49
"999".charCodeAt(0);
57

文字列を比較する場合、1の文字コードは9の文字コードより大きくないため、比較は誤りです。

修正は、文字列を数値として扱うことです。いくつかの方法を使用できます。

parseInt(string, radix)
parseInt("1300", 10);
> 1300 - notice the lack of quotes


+"1300"
> 1300


Number("1300")
> 1300
于 2012-10-26T01:42:46.323 に答える
1

これを行う。

var x=parseInt(document.forms["frmOrder"]["txtTotal"].value);
var y=parseInt(document.forms["frmOrder"]["totalpoints"].value);
于 2012-10-26T01:34:32.673 に答える