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 :

passer une variable js d'un div à un autre


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut passer une variable js d'un div à un autre
    J'ai tenté de faire ce qui est marqué ds le titre ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script language="javascript">
    function Action1(sel_id)
    {
    item=sel_id.value;
    }
    document.write('<table><tr><td><div>');
    document.write('<select id="selectId" onchange="Action1(this)">');
    document.write('<option value="champ1">Champ1</option>');
    document.write('<option value="champ2">Champ2</option>');
    document.write('</select></div></td><td>');
    document.write('<div>');
    document.write(item);
    document.write('<div></td></tr></table>');
    </script>
    mais ça ne marche pas : cela pourrait-il marcher ? (j'ai volontairement mis tout le html dans des document.write pour faire plaisir à Nadox (je ne sais pas pourquoi, il adore les document.write ) et pour ne pas interrompre le script js pour avoir plus de chance que la variable js soit connue dans le 2e div)

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonsoir, il faudrait sûrement que tu reprennes le B.A.BA du javascript, pas pour le document.write, mais pour l'affectation des valeurs dans une DIV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Action1( sel_id){
      document.getElementById('div_result').innerHTML = sel_id.value;
    }
    document.write('<table><tr><td><div>');
    document.write('<select id="selectId" onchange="Action1(this)">');
    document.write('<option value="champ1">Champ1</option>');
    document.write('<option value="champ2">Champ2</option>');
    document.write('</select></div></td><td>');
    document.write('<div id="div_result">');
    // document.write(item);
    document.write('</div></td></tr></table>');

  3. #3
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Tu déclares une fonction qui ne fait rien d'autre qu'affecter la valeur d'un champs à une variable locale à la fonction.

    Le code Javascript crée une table, un formulaire et... génère probablement une erreur car la variable globale item utilisé pour la méthode document.write(); n'existe pas.

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut
    No smoking, ton code marche, mais ceci n'est qu'un test préliminaire avant d'aller plus loin, et c'est la variable que je voudrais transmettre (et non pas juste en afficher la valeur), pour pouvoir lui appliquer un traitement. J'ai donc tenu compte de la remarque de Eric2A et fait :
    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
    <script language="javascript">
    var item;
    function Action1(sel_id)
    {
    item=sel_id.value;
    }
    document.write('<table><tr><td><div>');
    document.write('<select id="selectId" onchange="Action1(this)">');
    document.write('<option value="champ1">Champ1</option>');
    document.write('<option value="champ2">Champ2</option>');
    document.write('</select></div></td><td>');
    document.write('<div>');
    document.write(item);
    document.write('<div></td></tr></table>');
    </script>
    mais le document.write(item); génère un undefined...donc, comment faire marcher ça ?

  5. #5
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Merci d'avoir pensé à moi laurentSc...
    Mais si je parle souvent des document.write, c'est que justement, ton code cherche à positionner la valeur de la variable(elle est bien globale puisque pas de 'var') sur l'évènement onchange d'un select et que le document.write est depuis longtemps écrit à ce moment(et le variable n'avais pas la valeur attendu à ce moment)... donc non ça ne peux pas fonctionner comme ça !

    Le code de NoSmoking fait ce que tu cherche à faire.

    Quel traitement tu veux lui faire à cette variable ? Dans la div tu ne pourra rien faire d'autre que l'afficher. Dans la fonction, tu pourra faire un traitement dessus.

    On reprends : les document.write sont écrit au chargement de la page.
    A ce moment la variable est vide, 'undefined'.
    La fonction sur le onchange est donc exécuté après(la page est chargé pour qu'on puisse toucher au select). Et là, la variable ne sert plus à rien pour le document.write qui est déjà écrit.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    j'ai un peu de mal à comprendre la démarche.

    Le javascript est interprété comme il se présente, de haut en bas et de gauche à droite, c'est séquentiel.

    Si la valeur est initialisée alors elle pourra être exploitée dans la suite du code, dans le cas contraire elle vaudra undefined.

    Si au chargement de la page tu veux affecter à la DIv la valeur du SELECT il te faut dans ce cas le faire une fois le document loadé.

    exemple
    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
    window.onload = function(){
      var oSelect = document.getElementById('selectId');
      var oDiv = document.getElementById('div_result');
      oDiv.innerHTML = oSelect.value;
    }
    function Action1( sel_id){
      document.getElementById('div_result').innerHTML = sel_id.value;
    }
    document.write('<table><tr><td><div>');
    document.write('<select id="selectId" onchange="Action1(this)">');
    document.write('<option value="champ1">Champ1</option>');
    document.write('<option value="champ2">Champ2</option>');
    document.write('</select></div></td><td>');
    document.write('<div id="div_result">');
    document.write('</div></td></tr></table>');
    ou encore en utilisant la fonction Action1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    window.onload = function(){
      var oSelect = document.getElementById('selectId');
      Action1( oSelect);
    }

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut
    Quel traitement tu veux lui faire à cette variable ?
    Le but est de faire moi-même le code que tu avais brillamment fait Nadox. Si je souhaite le faire moi-même (donc, d'une façon moins chiadée), c'est pour être capable de le maintenir. Donc l'idée reste la même : l'utilisateur fait un choix avec un select (un choix de fichier video), et celui-ci est ensuite affiché (par appel du player). Je sais déjà appeler le player, mais je voudrais moi-même (avec mon code) passer le choix de l'utilisateur au player.
    Mais une solution ne serait-elle pas, dans l'appel de la fonction sur le onChange du select, d'appeler le player en fonction du choix de l'utilisateur ?

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Mais une solution ne serait-elle pas, dans l'appel de la fonction sur le onChange du select, d'appeler le player en fonction du choix de l'utilisateur ?
    cela me parait le plus évident d'une part et le plus simple d'autre part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Action1( sel_id){
      var ref = sel_id.value;  // recup. valeur
      fctAppel( ref);          // appel de la super fonction
    }

  9. #9
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Je confirme, c'est ce qu'il y a de mieux à faire.
    C'est d'ailleurs ce que mon code fait. La seule véritable distinction avec ce que tu est en train de faire, c'est que j'avais construit le html en DOM à la place des 'document.write' (et c'est d'ailleurs bien la seule chose qu'on peut faire avec des document.write : écrire).

    Par contre, tu n'aurais toujours pas l'envie de lire quelques tutos ou FAQ, afin de connaître le langage que tu (cherches à) utilise(r) ?
    Parce que c'est gentil de penser à nous demander quand tu rencontre un problème, mais si tu ne cherche pas à lire un peu plus de documentation, il va pas aller bien vite ton apprentissage...

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut
    Par contre, tu n'aurais toujours pas l'envie de lire quelques tutos ou FAQ
    Avoir envie, c'est une chose, mais avoir le temps en est une autre. Et il n'y a pas qu'en js que je souhaite m'améliorer, il y aussi le PHP et le flash (et notamment, à Noël, je me suis fait offrir un bouquin sur le framework Zend (un équivalent PHP de jQuery), et je ne l'ai pas encore commencé...)(et il faut savoir qu'il y a 5 ans, je ne savais même pas que le HTML existait...)

  11. #11
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Ça prendrais un peu de temps pour démarrer sur des bases complètes, mais au lieu d'en passer à essayer du code dont tu ne comprends pas le sens, ça t'en ferais probablement gagner... Tu pense pas ?
    Tu pourrais ensuite plus facilement utiliser un code existant et le maintenir.

  12. #12
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    C'est clair...

    Faut se dire que prendre le temps d'étudier c'est un peu la deuxième règle de succès de SpaceFrog (voir sa signature)



    Non je déconne, la deuxième règle c'est... ne pas utiliser document.write()

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut
    Non je déconne, la deuxième règle c'est... ne pas utiliser document.write
    Si Nadox en avait, il y aurait celle-là aussi...
    Cela dit, j'ai acquis assez facilement les bases du js et du PHP pour avoir fait une dizaine d'années du langage C (professionnellement)(et webmaster, c'est professionnel aussi (depuis 2006, et à l'occasion apprentissage du html) et aussi bénévole (une passion))

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 433
    Points : 5 788
    Points
    5 788
    Billets dans le blog
    1
    Par défaut
    La suite de ce fil est , et c'est pas loin de marcher car ça marche déjà avec un code pourri (plein de document.write).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passer une variable d'un page a l'autre
    Par xunil2003 dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2010, 09h57
  2. [AJAX] Faire passer une variable AJAX dans autre chose qu'un <div></div>
    Par fixbraun dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/02/2009, 14h34
  3. [Custom Tags 1.2] Passer une variable comme valeur d'attribut d'un tag jsp
    Par Pi2 dans le forum Taglibs
    Réponses: 7
    Dernier message: 16/09/2005, 14h44
  4. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52
  5. [Struts] Passer une variable dans l'url
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/03/2005, 15h23

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