2014-05-03 1 views
0

Salut les gars.Pourquoi ces objets `element` ont-ils la propriété` search`?

Je me demande pourquoi le travail de code suivant (testé dans le dernier Firefox nuit):

var links = document.querySelectorAll('a[href]'); 
for (var i = 0; i < links.length; ++i) { 
    console.log(links[i].search); // Where does `search` come from? 
} 

Comme « d'habitude », je reçois la chaîne de requête de l'href dans chaque élément a (quelque chose que je peut également faire avec un simple substr ou quelque chose, mais ce n'est pas le point); alors, si je fais quelque chose comme ceci:

var divs = document.querySelectorAll('div'); 
for (var i = 0; i < divs.length; ++i) { 
    console.log(divs[i].search); 
} 

Tout ce que je reçois est undefined.

Selon MDN, il n'y a pas une telle chose comme search biens disponibles pour element objets (document.querySelectorAll(selector)returns un NodeList non en direct de element objets). Alors, d'où vient tout cela?

Toute aide serait grandement appréciée.

+3

Vous travaillez avec [éléments d'ancrage] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement), vous devez donc consulter la documentation appropriée. Différents types de nœuds d'éléments HTML ont des API différentes. – Pointy

+0

Merci @Pointy, c'est tout à fait logique! Puis-je accepter un "commentaire" en tant que "réponse"? – d125q

+0

J'étais fainéant mais je vais taper une réponse :) – Pointy

Répondre

0

Différents types de nœuds d'éléments HTML dans le DOM ont des API différentes. Les nœuds correspondant aux balises <a> implémentent une API pour examiner les URL. La propriété "search" est l'une de ces choses spécifiques au type. Fondamentalement, un nœud <a> a les mêmes propriétés que window.location, plus ou moins.

Questions connexes