IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

La variable invisible


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut La variable invisible
    Re-bonjour ,me re-voilo� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function changeConges(formulaire)
    {
    	var mois=formulaire.mois.value;// récupérer les valeurs des champs Mois et Jour
    	var jour=formulaire.jour.value;
    	var type=formulaire.type.value;
    	// récupérer le noeud du jour ciblé
    	var TR=document.getElementById(mois);
    	var TDs=TR.childNodes;
    	for(var i=0;i<TDs.length;i++)
    	{
    		if((TDs[i]['id'])==jour)
    		{
    			TDs[i].className=type;
    			TDs[i].innerHTML=type.toUpperCase();
    		}
    	}
    }
    la variable "type" semble �tre une variable fant�me : rien ne change.
    Si je code en dur par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    TDs[i].className='ma_classe';
    			TDs[i].innerHTML='blablabla';
    tout fonctionne parfaitement

  2. #2
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    L� comme �a je vois pas. �a pourrait �tre un conflit avec les noms de tes champs de formulaire, mais comme tu es dans une fonction et tu utilises bien var, ce n'est pas �a.

    En revanche, je vois une possible simplification :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if((TDs[i]['id'])==jour)
    Tu s�lectionnes un �l�ment par� Son id. �a ne te rappelle pas une fonction connue ?
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  3. #3
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Tu s�lectionnes un �l�ment par� Son id. �a ne te rappelle pas une fonction connue ?
    tu penses probablement � la fonction getElementById() ;
    100% d'accord avec toi , j'am�liorerai cela en temps utiles ; je vais essayer de changer le nom du champ ...

  4. #4
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    j'ai chang� les noms de champs et m�me le nom de la variable mais toujours rien !

  5. #5
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    je ne vois pas l�int�r�t de parcourir les enfants de la TR pour r�cup�rer un seul �l�ment via son ID, autant le faire tout de suite.

  6. #6
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    je ne vois pas l�int�r�t de parcourir les enfants de la TR pour r�cup�rer un seul �l�ment via son ID, autant le faire tout de suite.
    Enti�rement d'accord mais ce n'est pas le probl�me.
    Chaque chose en son temps

  7. #7
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Citation:
    je ne vois pas l�int�r�t de parcourir les enfants de la TR pour r�cup�rer un seul �l�ment via son ID, autant le faire tout de suite.

    c'est parce qu'il existe plusieurs <td> avec le m�me ID

  8. #8
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    C'est mal !
    Un id doit �tre unique dans la page. Si ta page contient plusieurs id identiques, les navigateurs vont se comporter de mani�re ind�termin�e (bien que pr�visible) pour essayer de satisfaire ton script. Ce n'est pas une mani�re stable de programmer.

    Un id doit �tre unique !
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  9. #9
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    v�rifies quand m�me qu'il n'y a pas un espace ou autre qui tra�ne, car comme l'a �crit Watilin les navigateurs vont quand m�me r�ussir l� o� ils nedevraient m�me pas essayer.

    On a le droit d'avoir plusieurs id�es mais qu'un seul ID.

  10. #10
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Hola !! je suis enti�rement ok avec les pratiques de bonne programmation concernant les id's uniques ou autre mais il faut avouer que �a m'arrange bougrement !
    Consid�rons ce bout de code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function changeConges(formulaire)
    {
    	var mois=formulaire.mois.value;// récupérer les valeurs des champs Mois et Jour
    	var jour=formulaire.jour.value;
    	var g=formulaire.genre.value;
    	// récupérer le noeud du jour ciblé
    	var TR=document.getElementById(mois);
    	var TDs=TR.childNodes;
    	TDs.className=g;
    	for(var i=0;i<TDs.length;i++)
    	{
    		if((TDs[i]['id'])==jour)
    		{
    			TDs[i].className=g;
    			TDs[i].innerHTML=g.toUpperCase();
    		}
    	}
    }
    l'id recherch� dans les enfants de TR est unique ;m�me s'il existe plusieurs id semblables dans le document.
    Sinon ,est il possible de remplacer les id's par autre chose ,comme un attribut quelconque ?
    Cela dit je ne voudrais pas para�tre insolent mais je ne vois toujours pas le rapport avec la variable g et le fait que si je code en dur l'affectation de l'attribut et du texte de TDs tout fonctionne au poil !?

  11. #11
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Tout d'abord, sans voir le code HTML associ�, il y a des choses que l'on ne peut pas voir.
    Par exemple, si le champ genre est de type radio, alors il y en a plusieurs et var g=formulaire.genre.value; n'est pas correct.

    Ensuite, tu commets de grosses erreurs.
    Non, les childNodes d'un tr, ce ne sont pas tous les td ! Ce sont les td ainsi que les diff�rents noeuds texte qui peuvent exister dans le DOM (par exemple les sauts de lignes).
    Ensuite
    Tu ne peux pas affecter un nom de classe � une collection : donc erreur de script, il ne va pas plus loin...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    for(var i=0;i<TDs.length;i++)
    L� encore, dans la boucle, tu traites tous les �l�ments comme des �l�ments HTML alors que tous ne le sont pas.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  12. #12
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Non, les childNodes d'un tr, ce ne sont pas tous les td !
    c'est vrai mais les noeuds texte ne poss�dent pas d'Id.
    Tu ne peux pas affecter un nom de classe � une collection
    vrai aussi mais ce n'est pas :
    mais bien :
    L� encore, dans la boucle, tu traites tous les �l�ments comme des �l�ments HTML alors que tous ne le sont pas.
    Ah bon ! de quels types d'�l�ments parles-tu ?

  13. #13
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Tu peux parcourir la collection cells de la TR et faire un test sur la className.

  14. #14
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Apr�s test des valeurs re�ues par l'argument de ma fonction il se trouve que les variables mois et jour sont ok mais que g est "undefined" ; pas de bol ! c'est celle qu'il me faut ! Qui peut me dire pourquoi cette valeur de formulaire n'est pas initialis�e ?
    le formulaire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <form name="formulaire" action="http://127.0.0.1/HTML/recap.php">
    	CA<input type="radio" name="genre" value="ca"/>
    	RH<input type="radio" name="genre" value="rh"/>
    	RT<input type="radio" name="genre" value="rt"/>
    	HP<input type="radio" name="genre" value="hp"/>
    	JS<input type="radio" name="genre" value="js"/>
    	FR<input type="radio" name="genre" value="fr"/>
    	FP<input type="radio" name="genre" value="fp"/>
    	RR<input type="radio" name="genre" value="rr"/>
    	Otaf<input type="radio" name="genre" value="otaf"/><br/>
    	Mois :<input type="text" name="mois" maxlength="10" size="10"/>
    	Jour :<input type="text" name="jour" maxlength="2" size="2"/>
    	Duree :<input type="text" name="duree" maxlength="2" size="2"/><br/>
    	<button onclick="changeConges(document.formulaire);return false;">OK</button>
    </form>
    La fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function changeConges(formulaire)
    {
    	var mois=formulaire.mois.value;// récupérer les valeurs des champs Mois et Jour
    	var jour=formulaire.jour.value;
    	var g=formulaire.genre.value;
    	window.alert('mois : '+mois+'\njour : '+jour+'type : '+g);
    	// récupérer le noeud du jour ciblé
    	var TR=document.getElementById(mois);
    	var TDs=TR.childNodes;
    	for(var i=0;i<TDs.length;i++)
    	{
    		if((TDs[i]['id'])==jour)
    		{
    			TDs[i].className=g;
    			//TDs[i].innerHTML=g.toUpperCase();
    		}
    	}
    }

  15. #15
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Parce que formulaire.genre est un tableau

    Code Firebug : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    >>> formulaire.genre
    [input ca, input rh, input rt, input hp, input js, input fr, input fp, input rr, input otaf]

    Il faut que tu parcoures ce tableau pour savoir lequel de ces input est checked.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  16. #16
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Citation Envoy� par Bovino Voir le message
    Tout d'abord, sans voir le code HTML associ�, il y a des choses que l'on ne peut pas voir.
    Par exemple, si le champ genre est de type radio, alors il y en a plusieurs et var g=formulaire.genre.value; n'est pas correct.

  17. #17
    Membre �clair�
    Avatar de exe2bin
    Profil pro
    Passionn� de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Passionn� de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par d�faut
    Merci � Watilin qui a per�u le probl�me pour sa clart� !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Contenu variable invisible avec var_dump
    Par Manuxy dans le forum Langage
    R�ponses: 5
    Dernier message: 05/09/2013, 18h11
  2. Variable invisible ada
    Par walla dans le forum Ada
    R�ponses: 1
    Dernier message: 19/05/2011, 11h17
  3. passer une variable invisible dans un combobox
    Par thor76160 dans le forum C#
    R�ponses: 8
    Dernier message: 17/04/2009, 17h43
  4. Contenu des variable invisible dans code source
    Par Invit�(e) dans le forum ASP
    R�ponses: 16
    Dernier message: 05/06/2008, 13h56
  5. Variable invisible pour requ�te SQL !?
    Par yopuke dans le forum Langage
    R�ponses: 26
    Dernier message: 11/05/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo