属性未定义但console.log可以看到它

时间:2015-01-16 19:53:33

标签: javascript

我正在创建一个由sku,qty和subtotal组成的动态表单。因此,表单从没有输入开始,并在用户搜索产品时填满。按键时,我需要计算总数量并通过javascript显示给用户。

我在按键时使用getElementsByClassName获取所有数量输入元素并计算所有值。但是浏览器返回错误(Uncaught TypeError:无法读取未定义的属性'值'但是我可以记录该值。

我只使用本机JavaScript而不使用jQuery。

    qtyelements = document.getElementsByClassName('qty-element');
    var x;
    var count = 0;
    for(x = 0; x <= qtyelements.length; x++){
        console.log(qtyelements[x].value);
        count = count + parseInt(qtyelements[x].value);
    }

这是我的形象 problem

1 个答案:

答案 0 :(得分:2)

长度为您提供项目数,但集合为零。因此,例如,虽然长度可能是三,但您只能循环到两个(0,1,2)。

所以改变:

x <= qtyelements.length

为:

x < qtyelements.length

在你的情况下,看起来你只有两个元素,因此索引将是0和1,但是你检查2是否存在<=,因此未定义。