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
支持:
你可以写自己的。 就像是:
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 …它会给你所需的类名的元素