Nous savons que le JS natif nous fournit la méthode GetElementsByClassName, qui peut obtenir une collection de nœuds contenant une classe spécifiée via cette méthode. Notez qu'il s'agit d'une collection, c'est-à-dire que cette fonction renvoie un tableau.
Cependant, IE ne prend pas en charge cette méthode, mais cette méthode est très pratique, nous devons donc implémenter une telle fonction spécifiquement pour IE.
La copie de code est la suivante:
fonction getElementsByClassName (Oele, sclass, sele) {
if (oele.getElementsByClassName) {
return oele.getElementsByClassName (sclass);
}autre{
var aele = oele.getElementsByTagName (sele || '*'),
reg = new regexp ('(^ | // s)' + sclass + '($ | // s)'),
arr = [],
i = 0,
ilen = aele.length;
pour (; i <ilen; i ++) {
if (reg.test (aele [i] .classname)) {
arr.push (aele [i]);
}
}
retour arr;
}
}
Comment utiliser:
La copie de code est la suivante:
// le premier type: sélectionnez toute la classe sous le document comme éléments div de box_box
getElementsByClassName (document, 'box_box', 'div') [0] .style.background = 'jaune';
// le deuxième type: sélectionnez toute la classe sous le document comme éléments div de la boîte de box
getElementsByClassName (document, 'box-box', 'div') [0] .style.background = 'jaune';
// le troisième type: sélectionnez toutes les classes sous le document en tant qu'éléments de box-box
getElementsByClassName (document, 'box-box') [0] .style.background = 'jaune';
Oele et Sclass sont requis, SELE est facultatif.
Il n'y a aucun problème avec la ligne horizontale ou le soulignement dans SCLASS, tel que Box-Box Box_Box; Mais si ce sont d'autres caractères spéciaux, il est très probable qu'il y aura des problèmes, comme Box $ Box ... Bien sûr, vous pouvez ajouter des évasions pour obtenir des caractères spéciaux vous-même, comme Box // $ Box ...
Compatibilité: tester IE6 +
Amis, vous le saurez après l'avoir utilisé vous-même. C'est super facile à utiliser. Répartions-le à d'autres amis.