1

以下のJavaScriptを使用して、いくつかのテキストボックスから値を収集し、いくつかの計算を行い、結果をinnerhtmlコンテンツとして表示しています

window.onload = function () {
    var left = document.getElementById('mem_count');
    var right = document.getElementById('siz_single');
    var result = document.getElementById("disp_siz");
    function check(a, b, elem) {

        var txt = '';
        if (a === 0 && b === 0) {

        } 
        else if (a !== 0 && b === 0) {
         txt = "Enter size of single device in above column"

        }
        else if(a == 0 && b !== 0){

        txt = "Enter Meta member count in above column "
        }

        else  {
            var c = 1 +a        
            txt = "Your meta device size is " + (c*b) +" MB" + " = " + (c*b/1024) +" GB ";
        }
disp_siz.innerHTML = txt;

    }

    mem_count.onkeyup = calc;
    siz_single.onkeyup = calc;

    function calc() {
        var a = parseFloat(mem_count.value) || 0;

        var b = parseFloat(siz_single.value) || 0;
        check(a,b, this);
    }
}

出力はdivの間に表示されます

<div id="disp_siz"><-----above output will come here----></div>

この div は、html フォームの一部です。フォーム送信後、他のすべてのフォーム値を同じフィールドに保持できます。ただし、上記の出力を表示できません。それは私の価値観をクリアするだけです。フォームの送信後に、この JavaScript 変数の値を同じフィールドにエコーできる方法はありますか?

4

2 に答える 2

1

最初のオプション:

サーバー側で設定します。

2 番目のオプション:

ページが更新されると、ホワイトボードを掃除するようなもので、最初からやり直す必要があります。フィールドが存在する場合は、関数をトリガーして実行します。

calc();関数の最後に追加しonloadます。

    ...
    ...

    function calc() {
        var a = parseFloat(mem_count.value) || 0;

        var b = parseFloat(siz_single.value) || 0;
        check(a,b, this);
    }
    calc();  //<-- added this to trigger the calculation
}

別の問題:

また、要素を ID で直接参照しないでください。使用する必要があります

document.getElementById("disp_siz").innerHTML = txt;
于 2013-09-30T20:38:10.437 に答える
0

disp-siz存在しない変数 ( ) を参照しています。前に作成した変数 を使用しますresult

result.innerHTML = txt;
于 2013-09-30T20:30:35.817 に答える