Javascript 具有某些类的元素的getAttribute不';行不通

Javascript 具有某些类的元素的getAttribute不';行不通,javascript,class,attributes,input-field,getattribute,Javascript,Class,Attributes,Input Field,Getattribute,我有一些特定类的输入字段。它们都有一个数据属性,比如带有整数值的datasomedata。我必须计算这些数据属性的总和。我尝试将getAttribute与getElementsByClassName结合使用,但不起作用 我正在使用以下代码: var fields=document.getElementsByClassName('datainput'); var结果=0; for(字段中的变量i){ 结果+=字段[i].getAttribute('data-somedata'); } docu

我有一些特定类的输入字段。它们都有一个数据属性,比如带有整数值的
datasomedata
。我必须计算这些数据属性的总和。我尝试将
getAttribute
getElementsByClassName
结合使用,但不起作用

我正在使用以下代码:


var fields=document.getElementsByClassName('datainput');
var结果=0;
for(字段中的变量i){
结果+=字段[i].getAttribute('data-somedata');
}
document.getElementById('result')。innerHTML='总和为:'+result;

在(firefox)控制台中,我得到:

TypeError:
字段[i]。getAttribute
不是函数

为什么会这样?我怎样才能修好它

除非绝对必要,否则我不想使用jQuery(我不认为是这样)。

请检查:

var fields = document.getElementsByClassName('datainput');
var result = 0;

for (var i = 0; i < fields.length; i++) {        
    result += parseInt(fields[i].getAttribute('data-somedata'));
}
document.getElementById('result').innerHTML = 'The sum is: ' + result;
var fields=document.getElementsByClassName('datainput');
var结果=0;
对于(var i=0;i

不要使用for in语句,而是使用简单的for语句,如中所示:

var fields = document.getElementsByClassName('datainput');
var result = 0;
for (var i = 0; i < fields.length; i ++) {
    var val = parseInt(fields[i].getAttribute('data-somedata'), 10);
    result += val;
}
document.getElementById('result').innerHTML = 'The sum is: ' + result;

HTMLCollection
的前n=fields.length属性是其项的索引。

至于原因,for-in循环将遍历对象的所有属性,包括函数(和继承属性)。

@rakhee 8+15!=0815-见c.P.u1的答案,这是有效的;)对不起,我没有更新它…检查上面的小提琴。。。
var c = 0;

for(var i in fields) {
    if(c == fields.length) break;
    c ++;    
    console.log(fields[i].getAttribute('data-somedata'));
}