Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

retrouver la class d'un élément

5 réponses
Avatar
pere.noel
j'ai des li qui ont différentes clases possible, je cherche à récupérer
cette classe dans un script mais ça me dit "undefined" ???


je prend tous les li :
var lis=document.getElementsByTagName("li");
là pas de pb j'obtiens les 13 li dans mon html
après je souhaite les trier suivant que leur class contient "global" ou
"local".

je fais un boucle for
mais aussi bien lis[i].class que lis[i]["class"] sont à undefined ???

pourtant le DOM Inspector me donne bien un nodeName "class" avec les
bonnes valeurs...

et, chose encore + surprenante dans un li qui a la forme :

<li class="truc"><a href="javascript:mafonction('monarg');"...</li>

quand je fais :

alert(lis[i].firstChild);

j'obtiens :

javascript:mafonction('monarg')

càd l'attribut du firstChild ????

--
Père Noël

5 réponses

Avatar
pere.noel
Père Noël wrote:

je fais un boucle for
mais aussi bien lis[i].class que lis[i]["class"] sont à undefined ???


apparemment il faut utiliser :

elt.className...


pourtant le DOM Inspector me donne bien un nodeName "class" avec les
bonnes valeurs...

et, chose encore + surprenante dans un li qui a la forme :

<li class="truc"><a href="javascript:mafonction('monarg');"...</li>

quand je fais :

alert(lis[i].firstChild);

j'obtiens :

javascript:mafonction('monarg')

càd l'attribut du firstChild ????


pas clarifié )))
--
Père Noël

Avatar
ASM

quand je fais :

alert(lis[i].firstChild);

j'obtiens :

javascript:mafonction('monarg')

càd l'attribut du firstChild ????


En l'absence de plus de précisions dans ton appel, déjà bien d'la chance
que ça retourne qque chose !

essaie :

<p id="info">
<script type='text/javascript'>
function voir() {
var f = document.getElementsByTagName('LI');
var t = "";
for(var i=0; i<f.length; i++) {
t += 'lien '+(+1+i)+' = ';
var test = f[i], j=1;
while(test.firstChild) {
t += ' - child '+j+
' : nodeName = '+test.firstChild.nodeName+' - attribus = ';
t += (test.firstChild.attributes)? 'oui' : 'non';
t += ' - nodeValue = '+test.firstChild.nodeValue+'<br />t ';
test = test.firstChild, j++;
}
t += '<br />';
}
var pre = document.createElement('PRE');
pre.innerHTML = t;
document.getElementById('info').appendChild(pre);
}
</script>
<a href="#" onclick="voir();">VOIR</a>
</p>

ou (puisque pas de copie/colle) démo :
http://cjoint.com/?mAk2vRaESl


et regarde :
http://fr.selfhtml.org/javascript/objets/node.htm



--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
pere.noel
ASM wrote:


En l'absence de plus de précisions dans ton appel, déjà bien d'la chance
que ça retourne qque chose !


n'importe quoi !

firstChild n'est pas précis, c'est ça ?

que je sache c'est un noeud pas un attribut.

ma question portait d'abord sur l'attribut class d'un li, apparemment en
js l'attribut class se lit par className et pas class, ce que je ne
savais pas quand j'ai posé ma question.

pourtant l'attribut class et bien un noeud dans le dom...




--
Père Noël

Avatar
ASM
ASM wrote:

En l'absence de plus de précisions dans ton appel, déjà bien d'la chance
que ça retourne qque chose !


n'importe quoi !


Si tu veux

firstChild n'est pas précis, c'est ça ?


pas extrèmement,
mais, en effet c'est curieux que ça ne renvoie pas "HTMLAElement"
comme ça le fait pour les LI par exemple (HTMLLIElement)

http://cjoint.com/?mAn3qROJSw
(cliquer 'VOIR')

que je sache c'est un noeud pas un attribut.


certes

ma question portait d'abord sur l'attribut class d'un li, apparemment en
js l'attribut class se lit par className et pas class, ce que je ne
savais pas quand j'ai posé ma question.


et comme tu y avais répondu toi-même ...

pourtant l'attribut class et bien un noeud dans le dom...


<a href="#"
onclick="alert(document.getElementsByTagName('LI')[2].getAttribute('class'));">
class via DOM
</a>
<a href="#"
onclick="alert(document.getElementsByTagName('LI')[2].className);">
class via JS 1.5 aidé du DOM1
</a>

Ne pas confondre le JS pur DOM et le JS à la mode de nos grand' mères :-)


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
pere.noel
ASM wrote:

onclick="alert(document.getElementsByTagName
('LI')[2].getAttribute('class'));">

class via DOM


ah d'accord...

j'ai effectivement mis du js à la mode grammaire...

--
Père Noël