2010-10-28 3 views
2

Si je this-Aidez-moi à comprendre ce qui est erroné avec mon javascript

alert(anchor); 

Je reçois this-

"[objet HTMLLIElement]"

... ok, oui, c'est l'élément que je veux. Donc, je veux obtenir cet ID d'éléments.

Je tester comme ceci:

alert(anchor.attr("id")); 

... mais je ne suis pas d'alerte, rien. Je ne dois pas choisir un élément. Qu'est-ce que je fais de mal, qu'est-ce que je ne comprends pas?

+2

Utilisez-vous jQuery? Comme votre syntaxe .attr implique – Adam

+0

oui! On dirait que j'ai trouvé mon problème. Tout le monde a frappé le clou sur la tête. – Dave

+0

En outre, vous devriez vraiment utiliser la console pour déboguer ('console.log' au lieu de' alert() '). Les alertes sont beaucoup plus difficiles. http://getfirebug.com ou vos outils de développement intégrés sur votre navigateur va vraiment aider. –

Répondre

8

Il y a deux problèmes:

  • .attr() est fonction des objets jQuery ont, vous disposez d'un élément DOM (vous auriez besoin $(anchor) pour utiliser les méthodes jQuery contre l'élément).
  • Vous n'avez pas besoin de toute façon, le .id property ne fonctionnera (et beaucoup plus rapide), comme ceci:

alert(anchor.id); 
+4

+1 pour mentionner l'augmentation de vitesse de 'anchor.id'. Je suis si fatigué de voir des gens écrire du code inefficace simplement parce qu'ils ne comprennent pas les frais généraux des cadres. – stevendesu

3

C'est parce que attr n'est pas une méthode définie ou une propriété sur anchor. anchor est un objet élément HTML brut. Ce n'est pas un objet jQuery (je suppose que vous utilisez jQuery parce que vous avez utilisé la méthode attr).

Pour obtenir le code d'identification, tout ce que vous avez à faire est anchor.id. Si vous voulez vraiment pour utiliser attr, vous pouvez faire jQuery(anchor).attr("id").

2

La fonction attr() fait partie de jQuery, mais vous essayez de l'obtenir à partir d'un objet DOM simple. Vous voulez soit utiliser $(anchor) (pour envelopper l'élément dans jQuery) ou appelez anchor.getAttribute("id") à la place.

+1

ou plutôt: 'anchor.id'. –

3

si vous utilisez jquery, alors vous avez besoin ceci:

alert($(anchor).attr("id")); 
Questions connexes