Page 1 sur 1

executer des fonction a l'affichage de la page

Posté : 27 mai 2006, 10:18
par Monnier
voila il faudrait que je lance des fonctions des le lancement de la page mais je sais pas comment faire... au debut je pensais lancer la fonction avec <body load=fonction> mais mes fonction sont crée apres la balise body...
Si quelqun a la solution :roll:
Merci !!

Posté : 27 mai 2006, 10:46
par Cyrano
Alors mets tes fonctions dans l'en-tête <head> de ta page et ton év`enement onload fonctionnera très bien.

Sinon, il faudra ajouter dans la partie <body> après les fonctions une ligne lançant l'exécution.

Posté : 27 mai 2006, 11:01
par Invité
oui j'y ai deja penser mais le pb c'est que mes fonction sont generer par php d'apres le contenu
while($resultat2= mysql_fetch_assoc($req2))
{
$nb=1+$nb;
echo '<script language="JavaScript" type="text/JavaScript">
function afficher_masquer'.$nb.'() 
{ 
   if (document.getElementById("chp_txt'.$nb.'").style.display == "none") 
   { 
      document.getElementById("chp_txt'.$nb.'").style.display = "block"; 
   } 
   else 
   { 
      document.getElementById("chp_txt'.$nb.'").style.display = "none"; 
   } 
}
</script>';

Posté : 27 mai 2006, 11:07
par Cyrano
Ben justement, la seconde solution semble donc la plus appropriée : qu'est-ce qui t'empèche de lancer l'exécution après ? Dis-toi bien que quand le code arrive dans le navigateur, le JavaScript des fonction est déjà généré : donc une ligne d'exécution après ne peut que foncitonner normalement.

Posté : 27 mai 2006, 11:11
par Monnier
oui justement mais je sais pas faire la 2eme solution lol
C'est ce que je demande, comment on fait, moi je connais que le lancement de fonction avec body onload ...

Posté : 27 mai 2006, 11:16
par Cyrano
Un détail m'échappe un peu : en regardant de plus près ton code, je constate que tu crées en boucle des fonctions dynamiques : simplifie: ne crée qu'une seule fonction dans l'entête et dans ta boucle, envoie un appel vers la fonction avec un paramètre...

On dirait que tu veux gérer l'affichage ou le masquage de champs de formulaire : si ça doit se produire selon un évènement particulier, utilise un gestionnaire d'évènement directement dans ta balise de champ de formulaire en lui envoyant "this" en paramètre pour que ta fonction pointe sur le bon élément.

Est-ce que tu visualises sommairement cette formule ?

Posté : 27 mai 2006, 11:25
par Invité
en faite je cherche a faire afficher des tableau dynamique juste en dessous du lien sur lekel on cliquerai...
Bon j'avoue jy connais pas grand chose en javascript ^^
Vu que chaque lien doit afficher un tableau particulier, il faut obligatoirement que le calque contenant le tableau ne porte pas le meme id, c tout se que j'ai compris ^^
Si ta quelque chose de simple a me proposer, sa pourrait m'enrichier 8)

Posté : 27 mai 2006, 11:36
par Cyrano
Alors réfléchis quelques instants : tu as besoin d'avoir quelque part la liste des identifiants individuels des éléments à afficher/masquer mais tu ne les connais pas d'avance puisque ton contenu est généré dynamiquement en PHP.

Tu as ensuite besoin d'une fonction (une seule) à laquelle tu envoies en paramètre l'identifiant de l'élément à afficher et cette fonction doit pouvoir récupérer la liste des éléments à masquer lorsque tu en affiche un. Le plus simple serait de créer un tableau JavaScript qui pourrait être transmis à la fonction en même temps que le paramètre. Ce qui pose problème puisque dans ta boucle, une ligne n'est pas obligatoirement la dernière... il te faut donc avant d'initialiser la boucle connaître le nombre de lignes que tu vas construire...

Tu suis toujours ? Alors comment réaliser ça ?

Posté : 27 mai 2006, 11:40
par Invité
cho cho cho ^^
je seche .....
ps: C'est bien de toi que tu fais allusion dans ta signature dis moi lol

Posté : 27 mai 2006, 11:47
par Cyrano
Bon, si on regarde ton code, tu construis ta boucle en incrémentant une variable : comment pourrais-tu connaitre le nombre de lignes avant d'initialiser ta boucle while ?

Si tu trouves la réponse à cette question, tu auras presque résolu le problème parce que tu pourras alors générer un javascript qui initialisera un tableu d'éléments correspondant aux identifiants de tes éléments.

Par la suite, dans ta fonction, tu envoies en paramètre l'identifiant de l'élément avec "this.id" et le tableau généré. Dans ta fonction, tu auras alors à parcourir ce tableau et à inverser l'affichage/masquage selon que tu arrives sur l'élément choisi ou non.

Digère ça tranquillement, ça va venir. Tu as le temps, je dois déconnecter pour l'après-midi, si tu suis le raisonnement en restant logique, tu auras peut-être même trouvé tout seul ce soir ;)

Posté : 27 mai 2006, 11:51
par Monnier
humm pour avoir le nombre de ligne il suffit de faire appel a la fonction
$nb = mysql_num_rows($req);

Bon je vais cogiter ...

Posté : 28 mai 2006, 10:02
par Cyrano
Ben voilà : à partir de là, tu peux générer un tableau d'identifiants JavaScript. :)

Posté : 28 mai 2006, 16:48
par Monnier
oki oki je vois un peu le principe merci :D