Je sais que "getElementsByClassName
" n'est pas pris en charge par IE8
. Savez-vous ce que je peux utiliser à la place? Je m'énerve par erreur
"L'objet ne supporte pas cette propriété ou cette méthode".
Le code HTML est:
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));
}
C'est le texte d'entrée qui appelle la fonction 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()'/>
Utilisez document.querySelectorAll('.verdana14.toAdd')
.
Voir aussi mon article lié blog .
La méthode getElementsByClassName
n'est pas prise en charge par IE8.
Vous devez utiliser document.querySelectorAll('.classname')
(fonctionne dans IE8 +) ou une bibliothèque qui implémente cette fonctionnalité - comme:
jQuery
Moo Tools
DOJO
YUI
Prototype
... entre autres ...
querySelectorAll
support:
http://www.quirksmode.org/dom/w3c_core.html#t13
getElementsByClassName
support:
Vous pouvez écrire le vôtre. Quelque chose comme:
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;
}
Cela fonctionnera plutôt bien, mais vous pouvez en écrire un plus rapide si vous le souhaitez. Ensuite, vous pouvez simplement changer:
document.getElementsByClassName('verdana14 toAdd');
À:
GEBCN('verdana14 toAdd');
utilisez jQuery ou filtrez les résultats de getElementsByTag