[Javascript,DOM] Creer dynamiquement un lien dans une table

Creer dynamiquement un lien dans une table [Javascript,DOM] - Programmation

Marsh Posté le 02-07-2002 à 21:40:49    

Bonjour,
 
Je voudrais creer dynamiquement une table de lien, les liens pointant vers une page ou appelant une fonction JS.
 
Apparament, il n'est pas possible de generer un lien directement (avec un <a href...> classique), mais il faut passer par l' evenement 'onClick'.
 
J'arrive bien a appeller ma fonction JS quand je clique sur mon lien, le probleme c'est que je dois passer des parametres a ma fonction et c'est la que ca marche pas.
 
En effet, si je fais un
 

Code :
  1. param=...;
  2. myTD.onclick=function () { ma_fonction_js(param); }


 
(comme je l'ai lu dans un autre topic), et que je definis par exemple 3 liens (donc que j'appelle 3 fois ce morceau de code), a chaque fois que je clique sur le lien, 'param' vaut la derniere valeure que je lui ai affecte, et donc ca marche pour le dernier lien mais pas pour les 2 premiers...
 
Une premiere solution est donc de definir des fonctions differentes pour chaque lien, mais c trop lourd.
 
Sinon j'ai vu qu'on pouvait essayer de passer par les evenements avec la fonction AttachEvent en specifiant des attributs :
 

Code :
  1. myTD.setAttribute("id",txt);


 
et qu'on les recuperais en faisant
 

Code :
  1. event.scrElement.getAttribute("id" )


 
mais je ne vois pas comment faire marcher ca (vu que je n'ai pas d'objet event...).
 
J'espere que j'ai ete clair, et merci a ceuxqui ont lu jusque la !


Message édité par grahf le 02-07-2002 à 22:00:57
Reply

Marsh Posté le 02-07-2002 à 21:40:49   

Reply

Marsh Posté le 03-07-2002 à 00:25:15    

grahf a écrit a écrit :

Apparament, il n'est pas possible de generer un lien directement (avec un <a href...> classique), mais il faut passer par l' evenement 'onClick'.


:??: tu génères tes liens où tu veux, quand tu veux.

grahf a écrit a écrit :

J'espere que j'ai ete clair


pas du tout.

Reply

Marsh Posté le 03-07-2002 à 10:23:56    

En fait ce que je voudrais faire (mais qui n'a pas l'air de marcher) c'est :
 

Code :
  1. myTD=document.createElement("TD" );
  2. myA=document.createElement("A" );
  3. mapage=...+...+".html";
  4. myA.setAttribute("HREF",mapage);
  5. currenttext=document.createTextNode("mon_texte" );
  6. myA.appendChild(currenttext);
  7. myTD.appendChild(myA);


 
si j'affiche le code qu'il genere j'aurai

Code :
  1. <TD><A HREF="xxx.html">mon_texte</A></TD>


(cad ce que je voulais), mais dans le navigateur j'ai juste le texte "mon_texte" qui apparait sans lien


Message édité par grahf le 03-07-2002 à 10:27:31
Reply

Marsh Posté le 03-07-2002 à 10:32:24    

>> myA.setAttribute("HREF",mapage);  
 
les noms des attributs sont case-sensitive.
 
myA.setAttribute("href",mapage);  
 
//
 
node.setAttribute(nom, valeur) est équivalent à node.nom = valeur
 
dans ton cas à myA.href = mapage.

Reply

Marsh Posté le 03-07-2002 à 10:56:33    

effectivement, ca marche avec "href", et je viens de resoudre mon probleme de passage d'arguments donc merci beaucoup !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed