2013-10-30 74 views
0

以下工作部分:上的JavaScript功能KEYUP

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我想不通,我做錯了

回答

2

我看到你調用而不是傳遞函數處理的功能問題:

使用此(除去()):

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

,而不是這樣的:

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

如果你不這樣做你的onkeyup事件會盡量給exec ute函數結果而不是執行函數。因爲你沒有返回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; 
+0

您好,我知道你在說什麼,但它仍然沒有工作。 – Alex

+1

@Alex查看我更新的答案 – antyrat

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" />