0

フィールドから自動合計を取得しようとしています。問題は、フィールドの合計に値がない場合、スクリプトが正しく機能していないことと、7つを超えるフィールドがある場合にスクリプトが機能していないことです。

これがjavascriptです:

function getTotal()
{
    var value01 = document.getElementById('value01').value;
    var value02 = document.getElementById('value02').value;
    var value03 = document.getElementById('value03').value;
    var value04 = document.getElementById('value04').value;
    var value05 = document.getElementById('value05').value;
    var value06 = document.getElementById('value06').value;
    var value07 = document.getElementById('value07').value;

    // Add them together and display
    var sum = parseInt(value01) + parseInt(value02) + parseInt(value03) + parseInt(value04) + parseInt(value05) + parseInt(value06) + parseInt(value07);
    document.getElementById('sum_total').value = sum;
}

入力:

<input type="text" id="value01" />
<input type="text" id="value02" />
<input type="text" id="value03" />
here is starting to be added with a button more input fields.
<input type="text" id="+" />
<input type="text" id="++" />
<input type="button" value="Add Them Together" onclick="getTotal();" />

私の質問は、var value010203などで自動+を取得するにはどうすればよいですか。

どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたの質問はあまり明確ではないので、あなたが何をしたいのかよくわかりませんので、最適な支援のために遠慮なく説明を提供してください。その点で、あなたが提供したものに基づいて、私は指摘する2つのことがあります:

1)「+」のIDが無効です。HTML 4仕様によると:

IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。

2)各値を含む異なる変数を作成する代わりに、各増分入力の合計を決定するforループ内で使用できる関数を作成することをお勧めします。これはより乾燥しており、入力の数が増えた場合に物事を簡素化するのに役立ちます。

function getValues(id){
    return document.getElementById(id).value;
}

以下の純粋なJavaScriptソリューションは、1つの入力ボックスから始まり、ボタンをクリックするだけで追加の入力を追加します。これは、あなたが探しているものだと思います。それに応じて初期入力ボックスの数を変更できますが、それはあなたにアイデアを与えるはずです。

Javascript:

var max = 1;

function getValues(id){
    var result = document.getElementById(id).value;
    return (result ? result : 0);
}

function addInput(){
    max++;
    var input = '<input type="text" id="value'+ max +'" />';
    document.getElementById("valuesContainer").innerHTML += input;
}

function getTotal(){
    var sum = 0;
    for(var i=1; i <= max; i++){
        sum = sum + parseFloat(getValues("value" + i));
    }
    document.getElementById("total").innerHTML = sum;
}

HTML:

<div id="valuesContainer">
<input type="text" id="value1" />
</div>
<input type="button" value="Add Value" id="addMore" onclick="addInput();" />
<input type="button" value="Calculate Total" onclick="getTotal();" />
<div id="total"></div>

デモ: http: //jsfiddle.net/Y4xgU/

于 2013-01-20T00:57:25.780 に答える