0

以下は部分的に機能します。

function pvst(x,y){

    return parseInt(x)/100 * parseInt(y);
}

var value1 = document.getElementById('v1').value,
    value2 = document.getElementById('v2').value,
    input_1 = document.getElementById('v1'),
    input_2 = document.getElementById('v2');

function insertValue(){

    var newSum = pvst(value1, value2);

    if(isNaN(newSum) === true){
        document.getElementById("test").innerHTML = 'only numbers!!';
    }

    else{
        document.getElementById("test").innerHTML = newSum;
    }

}

input_1.onkeyup = insertValue();
input_2.onkeyup = insertValue();

ただし、onkeyup は期待どおりに機能しません。入力するとすぐにnewSumが更新されると思われます。どこが間違っているのかわかりません

4

2 に答える 2

2

関数ハンドラーを渡す代わりに関数を呼び出すという問題があります。

これを使用します(削除済み()):

input_1.onkeyup = insertValue;
input_2.onkeyup = insertValue;

これの代わりに:

input_1.onkeyup = insertValue();
input_2.onkeyup = insertValue();

これを行わない場合、onkeyupイベントは関数を実行する代わりに関数の結果を実行しようとします。insertValueそして、関数で何も返さなかったので、undefined値を取得して何もしません。

更新: 入力が変更されるたびに更新されない変数に値を格納し、常に同じ値を使用するため、値を確認するには、DOM から値を再度取得する必要があるため、次のようにする必要があります。

var newSum = pvst(document.getElementById('v1').value, document.getElementById('v2').value);

したがって、私の側から更新されたコードは次のようになります。

function pvst(x,y){
    return parseInt(x)/100 * parseInt(y);
}

var input_1 = document.getElementById('v1'),
    input_2 = document.getElementById('v2');

function insertValue(){

    var newSum = pvst(input_1.value, input_2.value);

    if(isNaN(newSum) === true){
        document.getElementById("test").innerHTML = 'only numbers!!';
    } else {
        document.getElementById("test").innerHTML = newSum;
    }
}

input_1.onkeyup = insertValue;
input_2.onkeyup = insertValue;
于 2013-10-30T14:58:20.593 に答える
0

これを試して:

function pvst(x, y) {

        return parseInt(x) / 100 * parseInt(y);
    }

    function insertValue() {

        var value1 = document.getElementById('v1').value;
        value2 = document.getElementById('v2').value;
        input_1 = document.getElementById('v1');
        input_2 = document.getElementById('v2');

        var newSum = pvst(value1, value2);

        if (isNaN(newSum) === true) {
            document.getElementById("test").value = 'only numbers!!';
        }

        else {
            document.getElementById("test").value = newSum;
        }

    }

サンプル HTML:

<input id="v1" type="text" onkeyup="insertValue();" />
<input id="v2" type="text" onkeyup="insertValue();" />

<input id="test" />
于 2013-10-30T15:20:12.950 に答える