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 paramètre à une fonction : echec


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut [DOM] Passage de paramètre à une fonction : echec
    Bonsoir,

    Je travaille sur un très modeste site web : http://location.btz.free.fr/

    Le menu de gauche est chargé par une fonction Javascript.
    En somme, chaque page de mon site charge le menu en appelant cette fonction. Chaque page s'identifie par le paramètre de la fonction ("cuisine", "salon", etc.). Cela me permet de personnaliser le menu en fonction de la page appelante.
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    function import_menu(page)
    {
      // A chaque bouton du menu,
      // - on charge le bouton avec le texte souligné si c'est celui de la page appelante
      // - on charge le bouton sans le texte souligné si ce n'est pas celui de la page appelante
      // Ce système permet de savoir sur quelle page on est actuellement : le bouton "cuisine" est souligné, par exemple.
     
      var html_data = "";
     
      if (page == "accueil")
      { html_data += "    <div id=\"div_accueil\">       <a href=\"index.html\">       <img src=\"images/menu/etiquette_accueil_u.png\" />      </a></div>               "; }
      else
      { html_data += "    <div id=\"div_accueil\">       <a href=\"index.html\">       <img src=\"images/menu/etiquette_accueil.png\" />      </a></div>               "; }
     
      if (page == "cuisine")
      { html_data += "    <div id=\"div_cuisine\">       <a href=\"cuisine.html\">     <img src=\"images/menu/etiquette_cuisine_u.png\" />      </a></div>               "; }
      else
      { html_data += "    <div id=\"div_cuisine\">       <a href=\"cuisine.html\">     <img src=\"images/menu/etiquette_cuisine.png\" />      </a></div>               "; }
     
      if (page == "salon")
      { html_data += "    <div id=\"div_salon\">         <a href=\"salon.html\">       <img src=\"images/menu/etiquette_salon_u.png\" />        </a></div>               "; }
      else
      { html_data += "    <div id=\"div_salon\">         <a href=\"salon.html\">       <img src=\"images/menu/etiquette_salon.png\" />        </a></div>               "; }
     
      if (page == "chambres")
      { html_data += "    <div id=\"div_chambres\">      <a href=\"chambres.html\">    <img src=\"images/menu/etiquette_chambres_u.png\" />     </a></div>               "; }
      else
      { html_data += "    <div id=\"div_chambres\">      <a href=\"chambres.html\">    <img src=\"images/menu/etiquette_chambres.png\" />     </a></div>               "; }
     
      if (page == "salle_eau")
      { html_data += "    <div id=\"div_salle_eau\">     <a href=\"salles_eau.html\">  <img src=\"images/menu/etiquette_salle_eau_u.png\" />    </a></div>               "; }
      else
      { html_data += "    <div id=\"div_salle_eau\">     <a href=\"salles_eau.html\">  <img src=\"images/menu/etiquette_salle_eau.png\" />    </a></div>               "; }
     
      if (page == "calendrier")
      { html_data += "    <div id=\"div_calendrier\">    <a href=\"calendrier.php\">   <img src=\"images/menu/etiquette_calendrier_u.png\" />   </a></div>               "; }
      else
      { html_data += "    <div id=\"div_calendrier\">    <a href=\"calendrier.php\">   <img src=\"images/menu/etiquette_calendrier.png\" />   </a></div>               "; }
     
      if (page == "tarifs")
      { html_data += "    <div id=\"div_tarifs\">        <a href=\"tarifs.html\">      <img src=\"images/menu/etiquette_tarifs_u.png\" />       </a></div>               "; }
      else
      { html_data += "    <div id=\"div_tarifs\">        <a href=\"tarifs.html\">      <img src=\"images/menu/etiquette_tarifs.png\" />       </a></div>               "; }
     
      if (page == "carte")
      { html_data += "    <div id=\"div_carte\">         <a href=\"carte.html\">       <img src=\"images/menu/etiquette_carte_u.png\" />        </a></div>               "; }
      else
      { html_data += "    <div id=\"div_carte\">         <a href=\"carte.html\">       <img src=\"images/menu/etiquette_carte.png\" />        </a></div>               "; }
     
      if (page == "contacts")
      { html_data += "    <div id=\"div_contacts\">      <a href=\"contacts.html\">    <img src=\"images/menu/etiquette_contacts_u.png\" />     </a></div>               "; }
      else
      { html_data += "    <div id=\"div_contacts\">      <a href=\"contacts.html\">    <img src=\"images/menu/etiquette_contacts.png\" />     </a></div>               "; }
     
      if (page == "partenaires")
      { html_data += "    <div id=\"div_partenaires\">   <a href=\"partenaires.html\"> <img src=\"images/menu/etiquette_partenaires_u.png\" />  </a></div>               "; }
      else
      { html_data += "    <div id=\"div_partenaires\">   <a href=\"partenaires.html\"> <img src=\"images/menu/etiquette_partenaires.png\" />  </a></div>               "; }
     
      document.write(html_data);
      //alert(page);
    }
    Exemple d'appel :
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
    <HTML>
      <HEAD> 
            <META http-equiv="Content-Type" Content="text/html; charset=ISO-8859-1">
            [...]
            <script src="load_data.js" type="text/javascript"></script>
      </HEAD>
      <BODY>
     
    <TABLE width="100%" border="0"><TR valign="top">
    <TD width="150px">
        <script type="text/javascript">import_menu("cuisine");</script>
    </TD>
    <TD>
    [...]
    Mon problème est relativement simple : j'ai un problème de passage de paramètre entre la page HTML et la page Javascript.

    Comme on peut le voir sur le site, certains appels ne posent aucun soucis : depuis les pages "accueil", "calendrier", "tarifs", "contacts" et "partenaires". Si on utilise ces liens, alors le menu change et souligne la page courante dans le menu.
    Mais si on utilise les autres liens :
    - ca fonctionne sous IE7
    - ca ne fonctionne plus sous Firefox2 (la valeur du paramètre est "undefined")

    Je ne comprends pas ce qu'il se passe... C'est comme si ca dépendait de la valeur du paramètre

    Avez-vous une idée, s'il vous plait ?

  2. #2
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Je teste à l'instant et je ne vois pas vraiment de problème !
    Je bosse avec Firefox 2.0 !

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    C'est à dire que à chaque fois que vous cliquez un lien du menu, celui-ci est alors souligné ? Pour les 10 liens du menu ?

    Pour ma part seuls certains d'entre eux fonctionnent correctement.
    Peut-être est-ce mon Firefox qui bug un peu... Un plug-in, par exemple...

    Quelqu'un d'autre pourrait confirmer, s'il vous plait ?

    Merci pour votre aide

  4. #4
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Yep, vous m'avez bien entendu. Ca fonctionne pour les 10 !

  5. #5
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Par contre, la technique du "document.write" n'est plus très tendance !!! Il y a moyen de faire beaucoup mieux de manière très semblable. Cf la FAQ (X)HTML.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    D'accord, merci !
    Je regarderai ca dès que possible, bien que ca me surprenne

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    Bonsoir,

    Je ne trouve pas la suggestion appropriée dans la FAQ (X)HTML. De quoi me parliez-vous ?

  8. #8
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Sans vouloir refaire tout un cours sur le DOM (pour lequel je n'ai de tout façon pas le niveau), sache que le DOM c'est le Document Object Model.
    C'est une modélisation orientée objet de ta page HTML.

    Ton document.write(...) c'est déjà du DOM puisque que tu dis à l'objet document d'écrire un certain texte. Simplement se contenter d'instructions document.write(...) donne un résultat plutôt statique puisque que ce que tu demandes d'écrire sera écrit au moment où tu le demandes à la suite du reste.

    En DOM tu écris ce que tu veux où tu le veux et surtout quand tu le veux !

    Imagine que ton menu soit dans un <DIV id="divMenu">, et bien à tout moment, tu peux aller ajouter du contenu à ton menu en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var menu=document.getElementById("divMenu");
    menu.innerHTML+="<a href='mapage.html'>Voir ma page</a>";
    Et ça c'est pas encore très DOM
    Le mieux serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var menu=document.getElementById("divMenu");
    var a=document.createElement("a");
    a.href='mapage.html';
    a.innerHTML='Voir ma page';
    a.class=...
    menu.appendChild(a);
    DOM + javascript c'est en fait la base de tout ce qui est DynamicHTML, Ajax, ... Et tout ça c'est tendance et surtout efficace.

    Pour plus d'info regarde ici sur Developpez.com.
    Je te conseille aussi http://developer.mozilla.org/en/docs/Main_Page, une bonne source d'info sur tout ce qui tourne autour de ces domaines.

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 157
    Points : 69
    Points
    69
    Par défaut
    Bonsoir,

    Merci pour ces précisions .
    J'utilise fréquemment l'approche DOM et les sections <DIV> pour gérer du contenu dynamique avec du Javascript... Mais dans le cas présent cela ne m'est pas nécessaire

    En effet, je souhaite simplement charger un menu flottant positionné en CSS de façon absolue. Qui plus est, le contenu de ce menu est statique, défini, et non modifié. Par conséquent je pense qu'un simple document.write est amplement suffisant

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2007, 16h07
  2. passage de paramètre à une fonction passée en paramètre
    Par bambou dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/08/2007, 10h39
  3. Réponses: 12
    Dernier message: 04/04/2007, 09h41
  4. Passage de paramètre à une fonction dans un G_CALLBACK
    Par Dimitri_87 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 15/09/2006, 11h04
  5. [PL/SQL] : Passage de paramètres à une fonction
    Par dcollart dans le forum Oracle
    Réponses: 5
    Dernier message: 13/07/2006, 10h17

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