2017-10-16 5 views
-1

J'ai lu sur les différents getlementbyID, name etc, mais je suis coincé avec un problème. Mon arbre DOM ressemble à ceci:Impossible de récupérer un élément DOM avec JavaScript

<suggestion> 
    <term>Some text here</term> 
    <term changed="true"> Some text here </term> 
</suggestion> 

Je suis en train d'obtenir le terme tagname changed="true" mais lorsque je tente avec getElementsByTagName il ne fonctionne pas. J'ai également essayé avec querySelectorAll("term changed=true") mais cela ne fonctionne toujours pas.

Parfois, il peut y avoir plus d'un <term> donc je ne suis pas en train de chercher le 2ème élément, il peut parfois être 3, 4 ou élément 9 ...

Comment puis-je récupérer spécifiquement cet élément, et non les autres éléments qui sont juste <term>?

+1

Qu'avez-vous essayé spécifiquement avec « querySelectorAll »? – TKoL

+0

querySelectorAll ("terme changé = true"); Il ne retourne rien, mais quand je regarde dans la console, il suppose de revenir .. – PlayPhil1

+1

'getlementbyID' n'est pas la même chose que' getElementbyId' – tommyO

Répondre

1

Peut-être que vous essayiez de trouver le term=true avec le mauvais sélecteur. Je l'ai fonctionne très bien, je pense:

https://jsfiddle.net/wdtyore1/1/

var element = document.querySelector('term[changed="true"]');

+0

C'est l'explication que je cherchais, je ne comprends pas pourquoi vous avez besoin d'utiliser des crochets, mais cela a résolu mon problème et fonctionne parfaitement! – PlayPhil1

+0

'querySelector' est juste des sélecteurs CSS. un espace entre les chaînes indique que vous parlez d'un élément * dans * l'élément précédemment sélectionné, donc 'terme changé' chercherait un élément' changed' dans un élément 'term'. Les crochets est comment vous sélectionnez pour l'élément avec des propriétés spécifiques ou des valeurs de propriété – TKoL

+0

@ PlayPhil1 Je suis heureux que votre truc fonctionne parfaitement. Veuillez marquer une réponse comme correcte si vous pensez qu'elle a résolu votre problème. – TKoL

0

Tout simplement parce que ce ne fait pas partie de la spécification HTML5, ne signifie pas qu'il ne soit pas accessible via JS

Pour votre exemple précis ce vous obtiendrez la valeur de changé: document.getElementsByTagName('term')[1].getAttribute("changed")

Notez que document.getElementsByTagName('term') retourne un tableau, alors vous avez probablement vouloir avoir une boucle qui regarde à travers ce tableau.

Aussi, si vous utilisez jQuery, vous pourriez cherche toujours quelque chose comme ceci: $('term[changed]').attr('changed')