В вашем коде две вещи не так.
Первый:
b = getElementByTagName("sum").value;
Вы, вероятно, имеете в виду getElementsByTagName
(обратите внимание на дополнительные s
). Кроме того, нет <sum>
элементов, что является проблемой, потому что вы не получите результатов. Наконец, .value
вернет свойство value
массива (а поскольку его не существует, вы получите undefined
), а не массив свойств value
каждого элемента.
Чтобы решить эти проблемы, вы можете написать это так:
inputElements = getElementsByTagName('input');
sumValues = [ ];
for(i = 0; i < inputElements.length; ++i) {
if(inputElements[i].name == 'sum') {
sumValues.push(inputElements[i].value);
}
}
Или в jQuery:
sumValues = $('input[name=sum]').map(function() {
return this.value;
});
Второй:
for (i=0; i<=b.length; i++){
b.length
описывает количество элементов. С <=
вы получаете доступ к b[b.length]
, которого не существует. Вы хотите получить доступ к b[b.length - 1]
, поэтому самый идиоматический способ написать это - переписать условие, чтобы использовать <
вместо <=
. То есть:
for(i = 0; i < b.length; ++i) {