1

一言で言えば、4つの数値を入力する計算を作成する必要があります。これに、合計された単位あたりの価格と合計に計算された税金を掛けます。私はスクリプトをサーフィンしてきましたが、失敗しました。

EDIT***: 読んで理解したコードの一部を編集しましたが、関数でコマンドを実行し、税金で値を実行することはできません。

 <html>
<head>
<title>Purchase&Tip Calculator</title>
function calculate() {
    var total = cost*total;
    var cost = document.getElementById("cost").value;
    var tax = document.getElementById("tax").value;

    total = cost*tax;
    document.getElementById("total").value = total;
}
</script>

</head>

<body>

<h1 align="left">Purchase&Tip Calculator</h1>

<input type="text" id="cost" />

<input type="text" id="cost" />

<input type="text" id="cost" />

<input type="text" id="tax" />

<input type="text" id="total" />

<button id="cost" onclick="calculate()" value="Calculate!" />Calculate!</button>
    </form>
</body>
</html>
4

2 に答える 2

1

あなたのコードで:

> function fixOrder() {
>     const TAX = 0.975;

const将来の予約語であり、ECMAScript の一部ではありません。これはJavaScriptに追加されており、ECMAScript の将来のバージョンに含まれる可能性がありますが、サポートしていないブラウザーではエラーがスローされるため、一般的な Web では使用しないでください。

>    var numPrice;
>    var total;
>    var tax;
> 
>    numPrice = parseFloat(document.getElementById("cost").value, 10);

parseFloatは単一の文字列引数を受け入れます。parseInt には基数はありません。文字列を数値に変換する方法はたくさんあります。1 つは単項演算+子で、もう1 つはNumber関数として呼び出されます。parseFloatおそらく問題ありませんが、入力するだけです。

コントロールはフォームにあるため、フォームの名前付きプロパティとしてより簡単にアクセスできます。

  var form = document.getElementById('form');
  numPrice = +form.cost.value;

>    tax      = parseFloat(document.getElementById("tax").value, 10);

という名前の変数が既に存在しますTAX。この値はどこにも使用されていません。

>    total    = parseFloat(document.getElementById("total").value, 10);
>    numPrice = numPrice * TAX;
>    total    = numPrice;

ここでは、 の値がtotal2 回割り当てられ、2 番目が最初の値を置き換えます。

>    total    = document.getElementById("total").value = "$" + total.toFixed(2);

このタイプの割り当ては保守には適していません。単純に保つ方がはるかに優れています。またtotal、先頭に「$」が付いているように見えるため、parseFloatが返されNaNます。フォームのテキストに「$」を入力し、フィールドに値を入力することをお勧めします。

算術演算に複合演算子を使用できます。混乱する可能性がありますが、何度も使用すると見つけやすくなります。おそらくあなたは次のことを意味しました:

  total = parseFloat(form.total.value);
  numPrice *= TAX;
  total += numPrice;
  form.total.value = total.toFixed(2);

HTML 部分:

>  <p>Total: <input type="text" id="total" name="total" value="" disabled=
   "disabled" /></p>

無効な外観になるため、合計フィールドを無効にしたくありません。また、disabled 属性に値は必要ありません (XHTML を使用していて、実際に Web 上で誰も使用していない場合を除きます)。

フィールドを読み取り専用にすることができます:

 <p>Total: $<input type="text" name="total" readonly></p>

しかし、ユーザーは、なぜ変更できないフィールドがあるのか​​不思議に思うでしょう。代わりにスパンにして、そのテキストまたは innerHTML を更新することを検討してください。

 <p>Total: $<span id="total">0.00</span></p>

  document.getElementById('total').innerHTML = total.toFixed(2);

次に、コンテンツを太字または simlar としてスタイル設定することもできます。

于 2012-10-12T00:56:56.673 に答える
0

私の理解が正しければ、入力フィールドからいくつかの数値を収集し、計算を行い、結果を出力しようとしているのですか? その場合は、基本的な例を示します。

var total = 0;
var cost = document.getElementById("cost").value;
var tax = document.getElementById("tax").value;

total = cost*tax;

あなたの合計値は入力要素から来るべきではありません(少なくとも私には意味がありません)。代わりに、コード内で定義する必要があります。ゼロは標準的な方法です。次に、コストと税金を適切な変数で初期化し、それらを乗算して、その結果を「合計」変数の値として設定するだけです。

これは、入力フィールドが割り当てられた後に発生するイベント (ボタンのクリックやキーダウン/アップなど) にバインドする必要があります。お役に立てれば!

パート II

これは、以下の受け取ったコメントに対する応答です。まず、このコードをカプセル化する関数を作成します。

function calculate() {
    var total = 0;
    var cost = document.getElementById("cost").value;
    var tax = document.getElementById("tax").value;

    total = cost*tax;
    document.getElementById("total").value = total;
}

対応する HTML は次のとおりです。

<input type="text" id="cost" />
<input type="text" id="tax" />
<input type="text" id="total" />
<button id="cost" onclick="calculate()" value="Calculate!" />Calculate!</button>

これが実際の例です: http://fluidev.com/stack/calculate/index.html

于 2012-10-12T00:22:58.160 に答える