Forum Programmation.web hasAttribute et Internet Explorer

Posté par  (site web personnel) .
Étiquettes : aucune
0
29
sept.
2005
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  . Évalué à 1.

    Tu n'as que 2 choix :
    - 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

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.