2016-05-30 101 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();