2016-05-30 139 views
-1

我試着運行這段代碼。但是當我設置x循環,代碼沒有工作。使用變量out for循環

function count(){ 
     var textbox,x=0; 
     textbox = document.getElementsByClassName('price'); 
     for (var i=0;i<=textbox.length;i++) { 
      x += parseInt(textbox[i].value); 
     }  
     document.getElementById('total').value=x; 
    } 
+0

什麼是你的錯誤信息? – messerbill

+0

你是什麼意思「設置循環」? https://jsfiddle.net/7msje7vr/ – Pimmol

+0

這段代碼什麼都不做 –

回答

4

看起來你的for循環的上限是1太大。請嘗試:

function count(){ 
     var textboxes,x=0; 
     textboxes = document.getElementsByClassName('price'); 
     for (var i=0;i<textboxes.length;i++) { 
      x += parseInt(textboxes[i].value); 
     }  
     document.getElementById('total').value=x; 
    } 

count(); 
2

您的函數在價格輸入的長度和這些價格輸入中的潛在值上均失敗。

的長度使用<=會產生一個不存在的價格輸入「遺漏的類型錯誤:無法讀取的未定義的屬性‘值’」的錯誤

我不喜歡你的「數」,因爲你的名字不計算任何東西,所以我改變了它,以及一些變數,以使意圖清晰。

此外,諸如「08」之類的值不會按預期解析(八進制),也不會「fred」。

審議下列投入:

<input class="price" value="33" /> 
<input class="price" value="3" /> 
<input class="price" value="-23" /> 
<input class="price" value="13" /> 
<input class="price" value="08" /> 
<input class="price" /> 
<input class="price" value="fred" /> 
<input id="total" /> 

修改後的代碼:

function totalPrice() { 
    var total = 0; 
    var prices = document.getElementsByClassName('price'); 
    var len = prices.length; 
    for (var i = 0; i < len; i++) { 
    total += isNaN(parseInt(prices[i].value, 10)) ? 0 : parseInt(prices[i].value, 10); 
    } 
    document.getElementById('total').value = total; 
} 
totalPrice();