Je cherche une réponse à cette question mais je ne pourrais en trouver aucun donc je pensais que j'essayais Stackoverflow. P>
en JavaScript, est-ce valide: p>
Je sais que cela peut être fait avec Je sais que l'ID est censé être unique par document, mais ce n'est parfois pas le cas. P>
merci! p> x = document.getelementByID ('myid');
y = x.getelementbyid ('mysecondid'); code> p>
getelementsbytagname code> mais je ne sais pas si l'objet renvoyé par
getElementyid code> est capable d'utiliser le
getElementyid code> Méthode. P>
6 Réponses :
Nope. P>
Seul le document code> code> est la méthode Même si getElementyid code> par défaut. p>
x code> était un iframe ou quelque chose, vous devez toujours accéder à d'autres propriétés ou quoi que ce soit avant de recevoir un autre
getElementyid code>. p>.
Eh bien, le meilleur moyen de savoir est de l'essayer. Dans ce cas, cela ne fonctionnera pas, car la méthode getElementyID code> est uniquement disponible sur les objets
DOMDOCUMUMUMUMUMENT CODE> (par exemple, le document
code> variable) et non
Domelement code> Objets, qui sont des nœuds individuels. Je pense que cela aurait dû être disponible sur ceux-ci aussi, mais bon, je suis en désaccord avec la majeure partie de la conception des API DOM ... P>
Nope.
... mais vous pouvez, bien que: p> Essayez sur cette page: p> Element.prototype.getElementById = function(req) {
var elem = this, children = elem.childNodes, i, len, id;
for (i = 0, len = children.length; i < len; i++) {
elem = children[i];
//we only want real elements
if (elem.nodeType !== 1 )
continue;
id = elem.id || elem.getAttribute('id');
if (id === req) {
return elem;
}
//recursion ftw
//find the correct element (or nothing) within the child node
id = elem.getElementById(req);
if (id)
return id;
}
//no match found, return null
return null;
}
Ne faites pas cela, s'il vous plaît. Il est inutile que vous puissiez simplement écrire document.getelementByID () code> au lieu d'étendre le prototype d'élément, il ne sert donc que de compliquer votre base de code et de confondre l'enfer hors des développeurs qui hériteront du projet. Zéro bénéfice.
Ne pas prolonger l'objet que vous ne possédez pas. Stackoverflow.com/ Questions / 14034180 / ...
Pensez à ne pas utiliser ID quand il y a plus d'un
Peut-être un attribut de classe ou personnalisée est peut-être meilleur, vous pouvez ensuite utiliser document.Quiseryselectorall code> à les pinces. p>
els = document.querySelectorAll('[custom-attr]')
Ceci est une alternative rapide basée sur nœud.contains La dernière ligne (profilée sur le dernier chrome et Firefox) effectue 4x à 10 fois plus rapidement que l'équivalent de JQuery P> container.querySelector('#my-element-id');
Vous pouvez simplement utiliser Un avantage à utiliser y = x.queryselector ('#' + 'mysecondid'); code> au lieu de
y = x.getelementbyid ('mysecondid'); code> L'échantillon de la question.
élément.getelementByID code> n'existe pas, mais vous pouvez l'ajouter comme mentionné dans d'autres réponses, même s'il n'est pas recommandé d'ajouter une méthode à
élément < / code>. Si vous souhaitez utiliser absolument ce type de solution, ci-dessous est une possibilité: p>
élément.queryselector code> au lieu de
document.getelementBeyID code> intérieure
élément.pototype.getelementByID code> Est-ce que
Element.Quiseryselector code> fonctionne même si l'élément n'est pas déjà dans le DOM, comme après la création avec
document.createelement code>. p> p>
Considérez jQuery .
Ou MOTOWOOLS (qui étend l'objet code> domelement code> pour prendre en charge un
getElementyid code > méthode).