Probleme avec document.writ()

[Résolu]
Signaler
Messages postés
8
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
30 mars 2007
-
Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
-
Bonsoir à tous,
Je souhaite construire un menu horizontal sauf que j'ai un soucis avec la méthode write de la classe document.
En fait, chaque fois que je clique sur un choix de menu la méthode write() m'affiche le sous-menu dans une autre page, chose qu'est tout à fais normal car l'instruction document.write() recharge une nouvelle page du coup, ça m'affiche le sous-menu dans une nouvelle page et non pas dans la page souhaitée.

Je vous invite a tester mon code.

Merci d'avance.

<HTML>
<HEAD>
<TITLE> Menu horizontal </TITLE>
<SCRIPT language='JavaScript'>

function selectionner(obj){
    obj.style.backgroundColor="#660066";
}

function deselectionner(obj){
    obj.style.backgroundColor="blue";
}

var content="";
function afficherMenu(obj,parGauche,parHaut,indice){

var i;
var n=3;    
    content="\";
    for(i=1;i<=n;i++)    
        content+='----
Sous-Menu'+indice+'-'+i+', ';
    content+='<TABLE>';
    document.write(content);
}
</SCRIPT>
</HEAD>

<SCRIPT>
var i;
var n=6;
var gauche=10,haut=35;
    document.write(\"<TABLE id='topdeck' cellspacing=1 width=600px>\");
    document.write(\"----
\");
    for(i=1;i<=n;i++){
        if(i>1)    gauche+=100;
        document.write('choix'+i+', ');
    }
    document.write(\"\");
    document.write("
");
</SCRIPT>

</HTML>

4 réponses

Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Bonjour,

Pourquoi utiliser document.write ? crée un div :

le code de ton menu

et utilise le innerHTML :
document.getElementById("le_menu").innerHTML="un code HTML";

Allez, je te simplifie le travail, pour ne pas trop te changer, je te crée une fonction :
var document_write=function(text){document.getElementById("le_menu").innerHTML=text};

Bonne Chance
<hr />
Stfou
Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Aïe, je voulais pas te faire peur, j'ai pas mis la bonne émoticone :

et non pas :
Messages postés
8
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
30 mars 2007

Merci stfou pour la réponse j pu resoudre le probleme.

Mtn j un autre soucis, en fait je veut que lorsque l'utilisateur clique une deuxieme fois sur le menu le sous menu disparait.
Donc pour cela j rajouter ça dans mon code :
 if (t.style.visibility == "visible")
  t.style.visibility = "hidden";

Mais apparament le menu s'affiche et se masque rapidement donc l'utilisateur n'aurra pas le temps de voir le changement.

Merci de bien voiloir m'aider.

le code :
<HTML>
<HEAD>
<TITLE> Menu horizontal </TITLE>
<SCRIPT language='JavaScript'>


function selectionner(obj){
 obj.style.backgroundColor="#660066";
}


function deselectionner(obj){
 obj.style.backgroundColor="blue";
}


var content="";
function afficherMenu(obj,parGauche,parHaut,indice){


var i;
var n=3; 
 
 content="\";
 for(i=1;i<=n;i++) 
  content+='----
Sous-Menu'+indice+'-'+i+', ';
 content+='<TABLE>';
 document.getElementById(\"pendule\").innerHTML=content;
 
  var t = document.getElementById(\"menuH\");
 if (t.style.visibility \"visible\")   t.style.visibility \"hidden\";
}
</SCRIPT>
</HEAD>

<FORM NAME=\"formulaire\">
<SCRIPT>
var i;
var n=6;
var gauche=10,haut=35;
 document.write(\"<TABLE id='topdeck' cellspacing=1 width=600px>\");
 document.write(\"----
\");
 for(i=1;i<=n;i++){
  if(i>1) gauche+=100;
  document.write('choix'+i+', ');
 }
 document.write(\"\");
 document.write("
");
</SCRIPT>

&nbsp;

</FORM>

</HTML> 
Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Bonjour, dans l'instruction for, ce n'est pas la peine de déclarer la variable i plus haut :
for(i=0;i<3;i++) {}
Et tu as oublié les accolades, sans ça ton code ne peut pas marcher.
Aussi, pourquoi utilises-tu le document.write si tu utilise déja le innerHTML ?

<hr />Stfou