Maison >interface Web >js tutoriel >Comment puis-je utiliser « document.getElementsByClassName » dans Internet Explorer ?

Comment puis-je utiliser « document.getElementsByClassName » dans Internet Explorer ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-08 16:54:02910parcourir

How Can I Use `document.getElementsByClassName` in Internet Explorer?

JavaScript document.getElementsByClassName Compatibilité avec IE

Lorsque vous tentez d'obtenir un tableau d'éléments avec une classe spécifique à l'aide de document.getElementsByClassName, IE rencontre des problèmes de compatibilité. Cette méthode n'est pas directement prise en charge par IE.

Méthode de Jonathan Snook :

L'utilisation de la fonction getElementsByClassName de Jonathan Snook, qui recherche des éléments en fonction d'une correspondance d'expression régulière, peut conduire à erreurs dans IE. En effet, la fonction n'est pas définie comme une méthode de document.

Solution :

Pour rendre la fonction compatible avec IE, elle doit être appelée en tant que fonction distincte sans faire référence au document :

function getElementsByClassName(node, classname) {
    var a = [];
    var re = new RegExp('(^| )'+classname+'( |$)');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

var tabs = getElementsByClassName(document.body,'tab');

Compatibilité IE8 :

Pour IE8 et versions ultérieures, une approche alternative peut être utilisée :

if(!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
        return this.querySelectorAll("." + className);
    };
    Element.prototype.getElementsByClassName = document.getElementsByClassName;
}

var tabs = document.getElementsByClassName('tab');

Cette approche exploite la méthode querySelectorAll prise en charge dans IE8, qui fonctionne de la même manière que getElementsByClassName.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn