Ответ 1
Используйте document.querySelectorAll('.verdana14.toAdd')
.
Обновление: FWIW, Ive написал связанный пост в блоге.
Я знаю, что "getElementsByClassName
" не поддерживается IE8
. Знаете ли вы, что я могу использовать вместо этого? Меня раздражает ошибка
"Объект не поддерживает это свойство или метод".
Код HTML:
function sumar() {
var elems = document.getElementsByClassName('verdana14 toAdd');
var myLength = elems.length;
total = 0;
for (var i = 0; i < myLength; ++i) {
if (elems[i].value!="") {
total += parseInt(elems[i].value,10);
}
}
var promedio = total/myLength;
parseFloat(document.getElementById('promediocal').value = promedio.toFixed(2));
}
Это текст ввода, который вызывает функцию javascript:
<input name='AE_EA_1_BIV_003_2' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_2' style='width:50px' onChange='sumar()'/>
<input name='AE_EA_1_BIV_003_3' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_3' style='width:50px' onChange='sumar()'/>
<input name='AE_EA_1_BIV_003_4' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_4' style='width:50px' onChange='sumar()'/>
Используйте document.querySelectorAll('.verdana14.toAdd')
.
Обновление: FWIW, Ive написал связанный пост в блоге.
getElementsByClassName
не поддерживается IE8.
Вы должны использовать document.querySelectorAll('.classname')
(работает в IE8 +) или библиотеку, которая реализует эту функцию - например:
jQuery
Moo Tools
DOJO
YUI
Prototype
... Среди других...
querySelectorAll
поддержка:
http://www.quirksmode.org/dom/w3c_core.html#t13
getElementsByClassName
поддержка:
Вы можете написать свой собственный. Что-то вроде:
function GEBCN(cn){
if(document.getElementsByClassName) // Returns NodeList here
return document.getElementsByClassName(cn);
cn = cn.replace(/ *$/, '');
if(document.querySelectorAll) // Returns NodeList here
return document.querySelectorAll((' ' + cn).replace(/ +/g, '.'));
cn = cn.replace(/^ */, '');
var classes = cn.split(/ +/), clength = classes.length;
var els = document.getElementsByTagName('*'), elength = els.length;
var results = [];
var i, j, match;
for(i = 0; i < elength; i++){
match = true;
for(j = clength; j--;)
if(!RegExp(' ' + classes[j] + ' ').test(' ' + els[i].className + ' '))
match = false;
if(match)
results.push(els[i]);
}
// Returns Array here
return results;
}
Будет работать неплохо, но вы можете написать быстрее, если захотите. Затем вы можете просто изменить:
document.getElementsByClassName('verdana14 toAdd');
To:
GEBCN('verdana14 toAdd');
используйте jQuery или отфильтруйте результаты из getElementsByTag
Я написал эту небольшую библиотеку (менее 1кб), которая использует собственные методы для извлечения элементов dom. Если вы проверите метод className, вы найдете ответ на свой вопрос.
вы можете попробовать использовать jquery, поскольку у него есть альтернативный селектор классов, чтобы получить элементы там имена классов. $ ( ". testclass" ). Каждый... он предоставит вам требуемые элементы по именам классов