使用for循环中的变量

时间:2016-05-30 13:57:51

标签: javascript jquery for-loop scope

我试图运行此代码。但是当我将 x 设置为循环时,代码无效。

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;   
    }

2 个答案:

答案 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();

答案 1 :(得分:2)

您的功能在价格输入的长度和这些价格输入中的潜在价值都失败。

在长度上使用<=将在不存在的价格输入上产生错误“Uncaught TypeError:无法读取未定义的属性'值'

我不喜欢你的“计数”这个名字,因为你没有计算任何东西所以我改变了它以及一些变量以使意图清晰。

此外,诸如“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();