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!