getElementsByClassName&IE8:对象不支持这个属性或方法

我知道“ 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文本:

 <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,我写了一篇相关的博客文章 。

IE8不支持getElementsByClassName方法。

您应该使用document.querySelectorAll('.classname') (适用于IE8 +)或实现该function的库,如:

  • jQuery
  • Moo Tools
  • DOJO
  • YUI
  • Prototype

    …其中…


querySelectorAll支持:

http://www.quirksmode.org/dom/w3c_core.html#t13

getElementsByClassName支持:

http://www.quirksmode.org/dom/w3c_core.html#t11

你可以写自己的。 就像是:

 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'); 

至:

 GEBCN('verdana14 toAdd'); 

使用jQuery,或者从getElementsByTag过滤结果

我写了这个小的库(小于1kb),使用本地方法来检索DOM元素。 如果你签出className方法,你会发现你的问题的答案。

在Github上查找JS

你可以尝试使用jquery,因为它有另外的类select器通过类名来获取元素。 $(“。testclass”)。each …它会给你所需的类名的元素