Alors j'ai rencontré un problème étrange ...
Je veux saisir l'identifiant d'un formulaire dire: mais exécutant Voici un violon reproducteur du problème -> http: // jsfiddle .NET / JASCBBFU / P> P> document.getelementbyid ("test"). ID code> ne renvoie pas
Test < / Code> Comme prévu mais renvoie la saisie avec le nom
nom = "id" code>. Quelqu'un sache ce qui se passe ici? P>
4 Réponses :
C'est à cause de cette ligne ici:
document.getElementById("test").id // Gets input with the name of "id"
Que se passe-t-il ici est un ancien artefact de l'époque où HTML devait être formalisé. Il est censé s'asseoir uniquement sous une collection nommée, mais les navigateurs ont décidé de créer un accès au raccourci dans divers endroits aléatoires. De toute façon, vous pouvez lire plus ici: http://jibbering.com/faq/notes/form -Access / et une fois que je suis sur mon bureau, je citerai les parties pertinentes. p>
Pas sur HTML, il s'agit de la DOM.
Le JS semble envisager d'envisager http://jsfiddle.net/jascbbfu/3/ p> espère que cela aide! p> p> ID code> comme objet enfant à la forme plus grande que vous envisagez. Vous recherchez la fonction,
getattribute code>, cela fonctionne dans jsfiddle:
Les noms de contrôle de formulaire sont utilisés pour créer des propriétés nommées du formulaire qui référence au contrôle. Ainsi, là où vous avez: puis la propriété iD em> est attribué une référence à l'élément d'entrée nommé id em>. Les commandes de formulaire ne doivent jamais recevoir de noms les mêmes que les propriétés de formulaire standard, par ex. Dans ce qui suit: p> Il est impossible d'appeler la méthode de soumission du formulaire car form2 référence em> références l'entrée, pas la méthode. P > Comme indiqué dans d'autres réponses, vous pouvez modifier le nom de quelque chose qui ne convertit pas de propriétés de formulaire standard ou d'utiliser getattribute em>. La première solution est préférée car elle conduira probablement à des noms plus appropriés pour les commandes de formulaire et d'éviter l'utilisation de getattribute em>. P> p>
Merci, je ne savais pas que vous pouviez écraser les attributs comme ça, joli hacky; P Je vais probablement aller avec getattribute ou ajouter des attributs personnalisés (par exemple "colonne =") car j'aime l'idée de mapper mes entrées de formulaire directement sur mes colonnes de base de données. .
Pourquoi avez-vous besoin de trouver l'identifiant du formulaire? vous l'avez déjà...
Hm, dans votre jsfiddle, j'ai remarqué que le nom de la deuxième entrée de test est "ID1"; Je vousierai que vous interprétez le
.Id code> en tant qu'élément enfant de ce nom, plutôt que comme un attribut réel de lui-même. Je vais jeter un oeil à jsfiddle
@Deep je sais que j'ai l'id, c'est une preuve de concept ...