以下部分工作:

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。我不知道我在哪里做错了

最佳答案

我看到的问题是您调用函数而不是传递函数处理程序:

使用此命令(已删除()):

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;

10-08 05:16