Moyen Simple d'obtenir de l'élément par son id dans une balise div?
S'il vous plaît pardonnez-moi si je répète la question.
J'ai le code HTML que tous les éléments à l'intérieur d'une balise div a id différent, supposons que j'ai déjà obtenir la référence à la div, est-il un moyen simple d'obtenir de l'élément par son id sans itérer tous les éléments avec des div?
voici mon code html:
<div id="div1" >
<input type="text" id="edit1" />
<input type="text" id="edit2" />
</div>
<div id="div2" >
<input type="text" id="edit1" />
<input type="text" id="edit2" />
</div>
- Vous ne pouvez pas avoir plus d'un élément avec le même id dans l'ensemble de l'arborescence du DOM...
id
doit être unique, toujours. - veuillez ne pas utiliser ce. ce n'est pas valide balisage.
- Comme @PaulPROs répondre à l'indique, vous n'avez pas de code HTML. Vous avez quelque chose qui ressemble à du HTML, mais parce que vous avez plusieurs éléments avec le même
id
, il est invalide. - Je sais que l'id DOIT être unique. Mais une raison quelconque, je dois vivre avec ce genre de html.
- Si vous devez utiliser de l'HTML comme ça, vous ne pouvez pas attendre de Javascript pour bien travailler avec elle. Il donne un comportement indéterminé. J'ai donné un petit script ci-dessous qui parcourt les enfants immédiats de div2, et donne à chaque élément qui est un
<input>
pour vous.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer quelque chose comme cela.
Exemple De Balisage.
JavaScript
Démo: http://jsfiddle.net/naveen/H8j2A/
Une meilleure méthode suggérée par nnnnnn
Démo: http://jsfiddle.net/naveen/4JMgF/
L'appeler comme
getElementById()
? Si l'idée est de retour uniquement si c'est un enfant de l'un spécifique de la div, vous pouvez toujours commencer par l'obtention de l'enfant et la vérification de sa mère.ou
ou
ou
par exemple.
Vous ne voulez pas le faire. Il n'est pas valide HTML d'avoir plus d'un élément avec la même
id
. Les navigateurs ne traiter que bien, et vous allez avoir un comportement indéfini, ce qui signifie que vous n'avez aucune idée de ce que le navigateur va vous donner lorsque vous sélectionnez un élément, par cette identification, il peut être imprévisible.Vous devriez être en utilisant une classe, ou tout simplement une itération à travers les entrées et de suivi d'un index.
Essayer quelque chose comme cela:
JSFiddle
Un ID peut être utilisé seulement une fois dans une page. C'est du code HTML non valide pour plusieurs objets avec le même ID, même si elles sont dans les différentes parties de la page.
Vous pouvez modifier votre code HTML à ceci:
Ensuite, vous pouvez obtenir le premier élément dans div1 avec un sélecteur CSS comme ceci:
En jQuery:
Ou, si vous voulez parcourir les éléments dans un de tes divs, vous pouvez le faire comme ceci:
Si je ne pouvais pas utiliser un framework comme jQuery ou YUI, j'allais le chercher Grésillement et comprennent que c'est le sélecteur de logique (c'est le même sélecteur moteur est à l'intérieur de jQuery) parce que la manipulation du DOM est massivement plus facile avec une bonne sélecteur de bibliothèque.
Si je ne pouvais pas utiliser la même Grésillement (ce qui serait une baisse massive de la productivité du développeur), vous pouvez utiliser de la plaine des fonctions DOM pour traverser les enfants d'un élément donné.
Vous utilisez des fonctions DOM comme childNodes ou firstChild et nextSibling et vous en aurez pour vérifier l'nodeType à assurez-vous que vous avez seulement eu le genre d'éléments que vous vouliez. Je n'ai jamais écrire le code de cette façon parce que c'est beaucoup moins productif que l'aide d'un sélecteur de la bibliothèque.
En HTML id doit être unique. Je vous suggère de modifier votre code à quelque chose comme ceci:
Malheureusement, ce n'est pas valide HTML. Un ID doit être unique dans l'ensemble du fichier HTML.
Lorsque vous utilisez Javascript
document.getElementById()
cela dépend du navigateur, de l'élément dont il sera de retour, c'est surtout la première avec un IDENTIFIANT donné.Vous aura pas d'autre chance que de ré-affecter vos Identifiants, ou, alternativement, à l'aide de la
class
attribut.