2013-10-29 26 views
0

對不起,如果這是一個愚蠢的問題。我是編程的新手... 我從文本輸入有3個值。我希望將這些值中的2個存儲到單獨的數組中以供以後訪問。最後我想在文檔中顯示這3個值的總和。 我在做什麼錯?在javascript中添加HTML文本框的值時的困難

這裏是我的代碼:

<script> 

function displayCurrentBalance() { 
    var initialBalance = parseFloat(document.getElementById("initialBalance").value); 

    var inAmounts=[0]; 
    var outAmounts = [0]; 
    inAmounts.push(document.getElementById("amountIn").value); 
    outAmounts.push(document.getElementById("amountOut").value); 

    var sumIn = (inAmounts.reduce(function(a, b) { 
    return a + b[1]; 
    }, 0)); 
    var sumOut = (outAmounts.reduce(function(c, d) { 
    return c + d[1]; 
    }, 0)); 

    var result = initialBalance + sumIn - sumOut; 
    document.write(result); 
}; 

displayCurrentBalance(); 

</script> 
+0

關閉你的變量語句...'var variable ='';'有幾次你忘記了這麼做 –

+0

修復了它.still不工作,但是謝謝 – Kaitis

+0

你可以把它放在一個jsFiddle中,所有的代碼? – Evan

回答

0
  1. document.write(result);將覆蓋您的文檔之前,你甚至有機會進入值。使其在另一個輸入框中顯示一個值,或alert(result)

  2. 您應該將displayCurrentBalance附加到某個按鈕的onclick處理程序,如<button onclick="displayCurrentBalance()">Calculate</button>

  3. document.getElementById("amountIn").value和類似的調用會給你一個字符串。您應該使用parseFloatparseInt將其轉換爲整數或浮點數。

+0

謝謝我會嘗試它 – Kaitis

0

您可能在頁面中的元素可用之前調用該函數。否則,腳本應該位於頁面中的元素下方。

您的主要問題是您如何使用reduce。從輸入返回的值是字符串,因此在嘗試添加它們之前將它們轉換爲數字(否則您將連接字符串,而不是添加數字)。您應該也可以驗證這些值。

此外,減少被稱爲與陣列,而不是數組本身(這是提供給回調,而不是第二所述第四參數)的成員的值,所以:

var sumIn = (inAmounts.reduce(function(a, b) { 
    return +a + +b; 
}, 0)); 

修改其他呼叫同樣減少。我想你不需要提供初始值,因爲你初始化數組爲[0]。或者,在調用中保留初始值並將數組初始化爲[](即一個空數組)。

而不是使用document.write來顯示結果,最好將其作爲只讀輸入元素的值編寫,以便在用戶修改其他輸入中的值時使用後續調用來更新它。