Id et getElementById

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
veevee
Salamandre
Messages : 36
Inscription : 14 nov. 2004, 23:15

Id et getElementById

Message par veevee »

Bonjour,
je suis en train de m'échiner à comprendre comment fonctionne deux trucs :

- L'attibut Id dans un formulaire HTML
- La méthode getElementById() dans un script JS

Je crois comprendre que ces deux élements sont liés, le 2° utilisant le 1°

Un de vous peut-il me donner un exemple parlant de leurs utilisations


Merci
+++++++++++++++++
Les ignorants ont des certitudes
Ceux qui savent n'ont que des doutes
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Un identifiant est par définition unique dans un contexte donné (ici, le document HTML).

Tu peux donc identifier des éléments HTML de ton document en leur assignant un attribut id dans la structure de ton document.

La méthode getElementById() ne fait rien d'autre que ce que son nom indique, elle te permet de récupèrer un élément de ton document par son identifiant (donné par son attribut id).

je n'ai pas compris ta référence aux formulaires HTML, tu peux préciser ?
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

L'attribut ID peut s'appliquer à n'importe quel élément d'une page, pas seulement un champ de formulaire. Il permet simplement de l'identifier de manière unique dans le document, afin de lui appliquer un style particulier ou d'y renvoyer un lien interne. De plus, si c'est un champ de formulaire, il correspondra au nom de variable renvoyé au serveur.

La méthode getElementById() permet d'avoir accès au "nœud" de l'élément dans l'arbre DOM (une fois celui-ci construit), ce qui peut être bien pratique lorsqu'on veut en changer certaines propriétés dynamiquement (apparence, visibilité, contenu, ...).
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Benoit a écrit :De plus, si c'est un champ de formulaire, il correspondra au nom de variable renvoyé au serveur.
Surtout pas! L'attribut id ne remplace pas l'attribut name dans le cas des commandes de formulaire. Une commande ne comportant pas d'attribut name ne verra jamais sa paire name/value passée dans les données envoyées coté serveur (et pour cause, puisqu'il n'y a alors pas d'attribut name).
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Ah oui oups je pensais aux

Code : Tout sélectionner

<a name="machin"></a>
qu'on voyait souvent mais c'est vrai que les champs de formulaires doivent toujours avoir un nom.

La question porte peut-être sur l'existence de plusieurs formulaires portant les mêmes champs dans la page et l'identification de l'un d'eux via son ID ?
veevee
Salamandre
Messages : 36
Inscription : 14 nov. 2004, 23:15

Message par veevee »

Bonjour,
En fait, je crois me souvenir d'une page de formulaire ainsi bâtie :
=======================
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<SCRIPT LANGUAGE="JavaScript">
function trier() {
for (ix=1;ix<=4;ix++){
instructions
gnagnagna getElementById()
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formu" ACTION="http://www.domaine.com/" METHOD=POST>
<INPUT TYPE="text" NAME="article" id=1 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=2 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=3 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=4 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="button" VALUE="Valider" onClick=trier()>
</FORM>
</BODY>
</HTML>

en fait j'essaaie d'apprendre à me servir de ces instructions, à très bas niveau, car ma console JS JS me lance un avertissement :
Avertissement : Élément référencé par son ID/NAME dans le contexte global. Utilisez la propriété standard du W3C document.getElementById() à la place.
Fichier Source : file:///D|/Mes%20documents/Mes%20sites%20Internet/la.mirandole/brouillons/TESTER-ident-browser.html
Ligne : 10

Vous comprendrez que je suis assez loin des notions de "avoir accès au "nœud" de l'élément dans l'arbre DOM" dont parle Benoit

J'essaie de comprendre, voilà tout

La vie est dure pour les neuneux

Merci
+++++++++++++++++
Les ignorants ont des certitudes
Ceux qui savent n'ont que des doutes
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

Bonjour Veevee
veevee a écrit :<SCRIPT LANGUAGE="JavaScript">
function trier() {
for (ix=1;ix<=4;ix++){
instructions
gnagnagna getElementById()
}
remplace getElementById() par document.getElementById(i)
veevee a écrit :<FORM NAME="formu" ACTION="http://www.domaine.com/" METHOD=POST>
<INPUT TYPE="text" NAME="article" id=1 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=2 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=3 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="text" NAME="article" id=4 SIZE=40 MAXLENGTH=40>
<INPUT TYPE="button" VALUE="Valider" onClick=trier()>
Dans l'exemple les 4 INPUT TYPE="text" doivent avoir des NAME tous différents pour récupérer les différentes valeurs saisies et id doit être une chaîne de caractères... Donc ici id="1", etc...
Bienheureux les fêlés car ils laissent passer la lumière...
Avatar de l’utilisateur
pascal
Administrateur
Messages : 1515
Inscription : 28 juil. 2003, 15:13

Message par pascal »

avec un bémol, il est interdit d'avoir une id commençant par un chiffre, donc ici il y a une erreur de syntaxe html.
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

pascal a écrit :avec un bémol, il est interdit d'avoir une id commençant par un chiffre, donc ici il y a une erreur de syntaxe html.
autant pour moi... (ou "au temps pour moi" comme je l'ai lu ici ou là)

Pour Veevee, exemple d'utilisation du getElementById...

Supposons que quelque part j'ai un <div id="bulle"> (...) </div>

alors...

...document.getElementById("bulle").style.visibility="visible"; permet de rendre visible le bloc identifié "bulle"
...document.getElementById("bulle").style.visibility="hidden"; fait l'inverse, il le cache
Bienheureux les fêlés car ils laissent passer la lumière...
nomade
Iguane
Messages : 985
Inscription : 03 sept. 2003, 04:15

Message par nomade »

[HS]
Mirovinben a écrit :autant pour moi... (ou "au temps pour moi" comme je l'ai lu ici ou là)
C'est bien "au temps pour moi", aussi bizarre que ça puisse paraître ;)
[/HS]
La liberté des uns commence là où commence celle des autres.
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

nomade a écrit :[HS]
Mirovinben a écrit :autant pour moi... (ou "au temps pour moi" comme je l'ai lu ici ou là)
C'est bien "au temps pour moi", aussi bizarre que ça puisse paraître ;)
[/HS]
Je suppose que celà doit venir des fanfares où le fautif doit se recaler sur le temps (=tempo)... mais je suis HS sur ce coup ! Pardon VeeVee :wink:
Bienheureux les fêlés car ils laissent passer la lumière...
veevee
Salamandre
Messages : 36
Inscription : 14 nov. 2004, 23:15

"[resolu]"

Message par veevee »

Bonjour,
vous êtes des gros mauvais
Autan c'est un vent, qui soufle E-W sur le seuil de Naurouze, même que ça rend les gens fous :lol:

J'en suis la preuve vivante :roll:

Trêve de billevesées :
Je jongle comme un fou avec Id et get machin

Les conseils zavisés des gros mauvais dont auxquels... ont servi à quelque chose

Soyez en remerciés


[
+++++++++++++++++
Les ignorants ont des certitudes
Ceux qui savent n'ont que des doutes
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité