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 :

[DOM] passage de parametres [Fait]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut [DOM] passage de parametres
    bonjour,
    je crée une fonction en javascript qui créé un formulaire de saisie avec un bouton envoyer et un bouton close

    pour le bouton close j'affecte une fonction qui se chargera de supprimer les éléemnts du formulaire dynamiquement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input_close.setAttribute("onclick","close_insert_img_book(div_insert_img_b,div_parent_insert_img)");
     
       input_close.onclick = close_insert_img_book(div_insert_img_b, div_parent_insert_img); // pour Internet Explorer
    la fonction prend deux paramètres, voici donc cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function close_insert_img_book(div_insert_img_b,div_parent_insert_img)
    {
      var enfant = document.getElementById(div_insert_img_b);
      var parent = document.getElementById(div_parent_insert_img);
      alert(enfant);   alert(parent);
      //enfant.parentNode.removeChild(enfant);
    }

    lorsque je lance et que j'affiche alert(enfant), et alert(parent), il m'affiche "Null" comme valeur, ce qui n'est pas normal puisque j'ai vérifié que les div étaient bien créés sur ma page web initiale

    donc ma question serait de savoir si j'utilise la bonne syntaxe pour passer des paramètres dynamiquement en javascript ??

    ou quelqu'un a-t-il un exemple ou une solution à ce problème ?

    merci par avance

  2. #2
    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 : 54
    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
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input_close.setAttribute("onclick","close_insert_img_book(div_insert_img_b,div_parent_insert_img)");
     
       input_close.onclick = close_insert_img_book(div_insert_img_b, div_parent_insert_img); // pour Internet Explorer
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input_close.onclick = function(){close_insert_img_book('div_insert_img_b', 'div_parent_insert_img');}
    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

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut
    merci pour la syntaxe que je ne connaissais pas -> celle-ci est-elle valable pour IE et Firefox ?

    mais par contre, le résultat est le même, de plus il faut écrire :

    input_close.onclick = function(){close_insert_img_book(div_insert_img_b, div_parent_insert_img);} avec les paramètres sans les guillements puisque ce sont des variables justement que je souhaite passer en paramètre

    voici un exemple de code HTML généré (paramètres cette fois-ci avec des guillemets simple puisque les variables sont transformées en id)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td class="violet12px" align="center" width="27%"><span style="cursor: pointer" ondblclick="create_insert_img_book('biblio','set_img_book=1','div_insert_img1','div_parent_insert_img1','num_bk','30')" title="Double-cliquez pour modifier">&nbsp;</span><div id="div_parent_insert_img1"><div id="div_insert_img1"></div></div></td>
    lorsque je double-clique, la fonction create_insert_img_book se lance bien et mon formulaire est bien créé dans le div_insert_img1, mais lorsque je clique sur le bouton "Fermer" du formulaire qui est censé lancer close_insert_img_book, alors tout se passe comme si il ne connaissait plus la valeur des variables div_insert_img et div_parent_insert_img qui sont respectivement div_insert_img1 et div_parent_insert_img1, ce qui est confirmé par les valeurs obtenues Null et Null de mes alert

    donc ceci ne résout pas le problème du passage des paramètres

    j'avoue que je n'ai pas d'idée, pourtant je pense que la solution doit être toute simple

    merci

  4. #4
    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 : 54
    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
    Le problème, c'est que tu ne montres pas suffisamment de code pour pouvoir se faire une idée...
    Pour ce qui est de la première question :
    celle-ci est-elle valable pour IE et Firefox ?
    Non seulement elle est effectivement valable pour IE et FF (mais aussi Opera, Chrome Safari et autres) mais elle est surtout préférable. Le DOM niveau 2 accepte que les événements soient affectés en HTML comme des attributs, mais cela reste de la gestion d'événements, donc du JavaScript, il ne s'agit pas à proprement parler d'attributs HTML.

    Pour le reste, j'imagine qu'il peut s'agir d'un problème de portée de variable ou de façon de générer le formulaire. En tout état de cause, il serait préférable de montrer l'ensemble du script ainsi que l'appel des fonctions.
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut
    voici le code complet de mes deux fonctions

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    function create_insert_img_book(section,set,div_insert_img,div_parent_insert_img,num,num_book)
     {
       var form_insert_img = document.createElement('form');
       var fieldset_insert_img = document.createElement('fieldset');
       var input_insert_img = document.createElement('input');
       var input_submit = document.createElement('input');
       var input_close = document.createElement('input');
       var div_insert_img_b = document.getElementById(div_insert_img);
       var div_parent_insert_img = document.getElementById(div_parent_insert_img);
     
       form_insert_img.setAttribute("enctype","multipart/form-data");
       form_insert_img.setAttribute("encoding","multipart/form-data");
       var params = "?go="+section+"&"+set+"&"+num+"="+num_book;
       form_insert_img.setAttribute("action",params);
       form_insert_img.setAttribute("method","post");
     
       input_insert_img.setAttribute("type","file");
       input_insert_img.setAttribute("name","userfile");
       input_insert_img.setAttribute("enctype","multipart/form-data");
       input_insert_img.setAttribute("encoding","multipart/form-data");
       input_submit.setAttribute("id","x");
       input_submit.setAttribute("type","submit");
       input_submit.setAttribute("value","Envoyer");
     
       input_close.setAttribute("id","x");
       input_close.setAttribute("type","button");
       input_close.setAttribute("value","Fermer");
       //input_close.setAttribute("onclick","close_insert_img_book(div_insert_img_b,div_parent_insert_img)");
       //input_close.onclick = close_insert_img_book(div_insert_img_b, div_parent_insert_img); // pour Internet Explorer
       input_close.onclick = function(){close_insert_img_book(div_insert_img_b, div_parent_insert_img);}
     
       fieldset_insert_img.appendChild(input_insert_img);
       fieldset_insert_img.appendChild(input_submit);
       fieldset_insert_img.appendChild(input_close);
       form_insert_img.appendChild(fieldset_insert_img);
       div_insert_img_b.appendChild(form_insert_img);
     }
     
     
    function close_insert_img_book(div_insert_img_b,div_parent_insert_img)
    {
      alert(div_insert_img_b);
      alert(div_parent_insert_img);
      var enfant = document.getElementById(div_insert_img_b);
      var parent = document.getElementById(div_parent_insert_img);
      alert(enfant);   alert(parent);
      enfant.parentNode.removeChild(enfant);
    }
    et en pièce jointe le code initial de ma page web qui pose problème
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Essaie ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    input_close.onclick = function(p1,p2)
                                 {
                                    return function()
                                    {
                                      close_insert_img_book(p1,p2);
                                    }
                                 }(div_insert_img_b, div_parent_insert_img)

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

Discussions similaires

  1. DOS passage de parametre à un .bat
    Par malbaladejo dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 26/11/2014, 15h44
  2. [langage] Passage de parametre lors de l execution
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2004, 13h28
  3. Probleme de passage de parametre a un TQuery
    Par gve21 dans le forum C++Builder
    Réponses: 7
    Dernier message: 15/01/2004, 15h49
  4. Passage de parametre calculé
    Par soazig dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 06/06/2003, 16h25
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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