J'utilise ce script :
http://www.glazman.org/weblog/newarchive/2003_06_01_glazblogarc.htm(...)
document.getElementsByClass() = function (needle)
{
function _GetElementsByClass(outArray, seed, needle)
{
while (seed) {
if (seed.nodeType == Node.ELEMENT_NODE) {
if (seed.hasAttribute("class")) {
var c = " " + seed.className + " ";
if (c.indexOf(" " + needle + " ") != -1)
outArray.push(seed);
}
_GetElementsByClass(outArray, seed.firstChild, needle)
}
seed = seed.nextSibling;
}
}
var outArray = new Array();
_GetElementsByClass(outArray, document.documentElement, needle);
return outArray;
}
mais evidemment ca bug sous Internet Explorer, j'ai trouvé comment avoir Node sous IE, mais pour la fonction hasAttribute, je suis un peu perdu. quelqu'un aurait-il quelques pointeurs ?
# 2 possibilités
Posté par Thomas Hervé . Évalué à 1.
- Tu utilises la solution 1, avec un document.getElementsByTagName, et tu es cross-platform.
- Tu utilises la solution 2, et ca ne marche que sous Mozilla.
La solution 1 n'est pas super propre mais fonctionne. Son inconvénient apparait sur les documents HTML de tres grosse taille (> 1000 éléments) car il parcoure toute la liste des éléments.
La solution employé fréquemment (par exemple par MochiKit) est de spécifier en plus le type du tag (tu cherches rarement une classe valable sur différents types d'éléments) et de faire donc une fonction getElementByTagAndClassName.
--
Thomas
[^] # Re: 2 possibilités
Posté par Pooly (site web personnel) . Évalué à 2.
if (seed.className )
et ça marche sur IE6 et Firefox.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.