5
var dml = 30
var dd = parseFloat(document.getElementById("DriverD").value)     <----- Only numbers like 10
var dm = dd-dml

alert((dd - dml) * 0.75)    <----- This works
alert(dm * 0.75)            <----- This returns NaN
alert(typeof(dm))        <----- This show that dm is a Number

NaN を取得し続ける理由がわかりません。私はすでに試しましたが、変数(dd-dml)で構成される変数(dm)を乗算するparseFloatと、まだ NaN が表示されます。parseIntdm は、dml を dd または 10-30 で減算した結果です。解決策を共有してください。

私はここに来たばかりで、助けが必要です。トロールしないでください :) 私の Web サイトにコスト計算機を追加しようとしています。

4

5 に答える 5

1

私には問題ないようです。

別の考えられる問題を教えてください: がdocument.getElementById("DriverD").value数値かどうかをチェックしません。ユーザーが文字列またはその他の型を入力すると、問題が発生します。

于 2012-12-19T04:05:43.433 に答える
0

ここに到達できる唯一の理由NaNは、 の値が であるということddですNaN。の値はdmとして定義されdd - dml、 の値は値でdmlあるためNumber30.

parseFloat()常にNumber値を返します。-演算子は、必要な場合にのみオペランドを変換しますNumber。したがって、の値はdm定義上、値である必要がありNumberます。

ただし、NaNNumber値 ( typeof NaN === "number") であり、「有毒」です。オペランドがNaNになると、後続のすべての算術演算の結果は になりますNaN

これは、parseFloat()が を返さなければならないことNaNを意味します。これは、 への引数がparseFloat()10 進数表現のプレフィックスとして解釈できなかったことを意味します。

その一般的な理由の 1 つは、小数点のみがサポートされているのに、ユーザーが桁区切り記号 (サポートされていない) または小数点のカンマを入力したことです。

于 2012-12-19T04:58:53.510 に答える
0

これを試して

2 つのオペランドを parseFloat に変換する必要があります

<input type="text:" value="10" id="DriverD" />

var dml = parseFloat(30);
var dd = parseFloat(document.getElementById("DriverD").value);
var dm = dd-dml;
alert(dm * .10);

結果は-.2

于 2012-12-19T04:03:55.150 に答える