lancer une fonction javascript dans un lien HTML

Eléphanteau du PHP | 36 Messages

22 nov. 2006, 14:24

Salut j'ai un probleme que j'arrive pas a resoudre, je voudrais creer un liens qui execute une fonction javascript lorsqu'on clique dessus plutot de lancer un saut sur une autre page.
J'ai utilise l'evenement onCLick= function() et un saut internet href="#" mais ca ne marche pas vous avez une idee pourquoi ?

voici le code que j'ai fait :
...
document.getElementById("idDiv").innerHTML= "<a"+" href='#'"+" onClick='fonction();'>"+"lien"+"</a>";
...
Merci par avance ;)

Mammouth du PHP | 19672 Messages

22 nov. 2006, 14:33

Tu fais des concaténations inutiles, mais normalement, ceci devrait fonctionner :

Code : Tout sélectionner

document.getElementById('idDiv').innerHTML = '<a href="#" onClick="fonction(); return false;">lien<\/a>';
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 36 Messages

22 nov. 2006, 16:40

mais c'est normal que le lien fasse recharger la page ? car je me trouve avec un message d'erreur qui signale que mes parametres de ma fonction non defini !!??

Mammouth du PHP | 19672 Messages

22 nov. 2006, 16:47

Si tu n'as pas ajouté ce que j'ai mis (return false), oui, c'est normal
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 36 Messages

22 nov. 2006, 18:04

En fait je crois l'avoir mis, comme ca ne marche pas je vais te montrer le code que j'ai fait.
J'essaye de faire un menu sous la forme de bulles de bandes dessinee en javascript : j'ai cree 2 tableaux a 2 dimensions qui represente les question/reponses.
le format des tableau est le suivant :
question=new Array();
question[0]=new Array("question1",0);
question[1]=new Array("question2",1,"question3",2,"question4");
ect ...
le chaine question est l'intitule de la question et le numero qui suis est l'indice du taleau d reponse qui contient la reponse.
Les tableau reponse on la meme structure sauf quelle donne l'indice de la queestion qui doit suivre la reponse donne si elle exite
les bulles sont represente par des balise div
J'ai fait une fonction qui est charge de lire la question
donc cette fonction doit accepter en parametre le tableau des question possible pour que l'utilisateur puisse choisir celle qui veux.
je fait donc une boucle pour parcourir l'ensemble du tableau et pour chaque occurence je doit afficher dans la balise div de la question les questions sous forme de liens avec un onClick qui appele la fonction reponse qui a le parametre fonction de la question choisie.

Code : Tout sélectionner

function Question(laquestion){ for(i=0; i<laquestion.length; i+=2){ if(laquestion.length==2){ //affichage de la question si elle est seule (sans liens) document.getElementById("question").innerHTML= laquestion[i]+"<br>"; } else{ //affichage des questions document.getElementById('question').innerHTML += '<a href="#plus" onClick="Reponse(reponse[laquestion[i+1]]); return false;">'+laquestion[i]+"<\/a><br>";
Reponse est la fonction qui permet d'afficher les reponses
reponse est le tableau qui contiend tout les reponses possible
laquestion[i+1] est ne numero de la reponse qui correspond a la question
dans l'l'imbrication des fonction il doit avoir une syntaxe que je ne respecte pas :( car la page se recharge et bien sur les varaibles sont reinitialise et donc l'appel de la fonction ne fonctionne pas comme je le pense.
Si vous avez des idees pour me depanner ce serais cool ;)

Mammouth du PHP | 19672 Messages

22 nov. 2006, 18:31

J'ai beaucoup de mal à voir : aurais-tu quelque chose en ligne qu'on puisse tester directement ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 36 Messages

22 nov. 2006, 18:39

nop pas encore en ligne car pas finalise mais ce lien permet de voir l'ensemble du code donc de le debugger ;)
J'ai pas encore utilise les propriete css pour placer les balises div mais bon ... :(

Eléphant du PHP | 152 Messages

23 nov. 2006, 12:15

Ta fonction réponse est elle situé avant ou après ?

Changes la d'endroit, mets la en haut de page.

Eléphanteau du PHP | 36 Messages

23 nov. 2006, 12:43

Ta fonction réponse est elle situé avant ou après ?

Changes la d'endroit, mets la en haut de page.
elles sont dans le header, regarde dans le lien

arg j'arrive pas a faire un lien qui execute la fonction sans que dans une ecriture de ce type :

Code : Tout sélectionner

... onClick="Reponse(reponse[laquestion[i+1]]); return false ...
place dans un innerHTML place dans une boucle en i, les valeurs cible ne dont plus definie a l'execution :( :(

Eléphanteau du PHP | 36 Messages

26 nov. 2006, 22:05

J'ai enfin trouve une solution, comme d'ab on me l'a souffle mais je l'utilisait mal ...
Mon erreur se trouve dans l'appel du script javascript que je fait dans le href du lien:
href="Javascript:Reponse(reponse['+laquestion[i+1]+']);">'+laquestion+"<\/a>"+"<br>";

donc le classique bien utiliser les guillemets de maniere approprie