Lien url dans tableau dynamique !

Résolu
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 10 mars 2009 à 11:49
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 11 mars 2009 à 11:13
Bonjour tout le monde, petit souci en ce mardi matin :)

Alors voila j'ai un tableau dynamique en javascript et j'aimerai que dans une partie du tableau s'affiche des liens ...

Code du tableau :

function tabSuiviProjet()
{
 var doc = document.forms[0];



 if (doc.Pnbetap.value != ""){
 
  document.getElementById("suiviProjet").style.display="block";
 
  var oTable = document.createElement("TABLE");
  var oTHead = document.createElement("THEAD");
  var oTBody0 = document.createElement("TBODY");
  var oTBody1 = document.createElement("TBODY");
  var oCaption = document.createElement("CAPTION");
  var oRow, oCell;
  var i, j;
  
  var nbetap = parseInt(doc.Pnbetap.value);
  var nomEtap = doc.Pnometap.value;
  var date = doc.Pdateetap.value;
  var statut = doc.Pstatutetap.value;
  var  poids = doc.Ppoidsetap.value;
  var idEtap = doc.idEtape.value;
  
  var tabNomEtap = nomEtap.split("; ");
  var tabdate = date.split("; ");
  var tabStatutEtap = statut.split("; ");
  var tabPoids = poids.split("; ");
  var tabidEtap = idEtap.split("; ");
 
  var heading = new Array();
  heading[0] = "Nom Etape";
  heading[1] = "Date Echeance";
  heading[2] = "Avancement";
  heading[3] = "Poids";



  var stock = new Array();
  for (i=0;i<nbetap;i++){

     stock[i] = new Array(tabNomEtap[i], tabdate[i], tabStatutEtap[i], tabPoids[i]);}
   
    oTable.appendChild(oTHead);
    oTable.appendChild(oTBody0);
    oTable.appendChild(oTBody1);
    oTable.appendChild(oCaption);
  
     oTable.bgColor="#000000";
    oTable.cellSpacing=1;
    oTable.cellPadding=1;
    oTable.width = '75%';
    oTable.height = '50px';



    oRow = document.createElement("TR");
    oTHead.appendChild(oRow);
    oTHead.setAttribute("bgColor","#FFFFFF");
  
    for (i=0; i<4; i++){
       oCell = document.createElement("TH");
       oCell.innerHTML = heading[i];
       oRow.appendChild(oCell);}
  
   for (i=0; i<nbetap; i++){
       var oBody = (i<nbetap) ? oTBody0 : oTBody1;
       oRow = document.createElement("TR");
       oBody.appendChild(oRow);
       for (j=0; j<4; j++){
         oCell = document.createElement("TD");
         oCell.innerHTML = stock[i][j]; 
         oRow.appendChild(oCell);
      }
   }
    
      suiviProjet.appendChild(oTable);
 }
}

et j'aimerai que dans

for (i=0;i<nbetap;i++){
     stock[i] = new Array(tabNomEtap[i], tabdate[i], tabStatutEtap[i], tabPoids[i]);}

tabNomEtap[i] soit sous forme de lien .. quelqu'un peut il m'aider ?

Cordialement, Didier.

20 réponses

cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
11 mars 2009 à 09:42
Bonjour les gens,

Tout reprendre à tête reposé, ya vraiment rien de tel :)

J'ai trouvé la solution ...

désolé Bul3, mais t'as solution qui, je te fais confiance, doit être juste ne correspondait pas avec mon code
Si tu regarde bien mon code au dépard (qui marche impec) tu vois que tout le tableau est créé avec des createElement et je n'utilisais pas d'id pour le renseigner ... tout ce que je voulais c'était avoir un lien dedans ... donc après quelques minutes de reflexion j'en suis venu à la solution que voici :

oCell = document.createElement("TD");
link = document.createElement("A");
link.href = "http://***.***.***/aplocal/Projet.nsf/vueEtape/" + tabidEtap[i] + "?OpenDocument";
link.style.color = "Black";
link.innerHTML = stock[i][j];
oCell.appendChild(link);
oRow.appendChild(oCell)

et voila nickel ca marche :)

Merci à vous d'avoir prit de votre temps pour m'aider.
++
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 12:42
Bonjour,
ben ??? comme tu fais !
createElement("a") + appendChild... non ?
Cordialement [mon Site] [M'écrire] Bul
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 13:01
ouai mais je n'arrive pas à le mettre sous form de lien dans mon tableau

for (i=0;i<nbetap;i++){
   link = document.createElement("a");
   link.href = "http://***.***.***/aplocal/Projet.nsf/vueEtape/" + tabidEtap[i] + "?OpenDocument";
   text = document.createTextNode(tabNomEtap[i]);
   link.style.color = "Black";
   stock[i] = new Array(link.appendChild(text).nodeValue, tabdate[i], tabStatutEtap[i], tabPoids[i]);}

voila ce que je fais pour le moment.
 
Cela m'affiche bien le nom que je désire avoir comme lien mais le soucis c'est que ce n'est pas un lien ... :s
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 13:11
ch'tiot exemple

    

    

    <script>
        var link=link = document.createElement("a");
        link.href = "http://www.javascriptfr.com";
        //text = document.createTextNode(tabNomEtap[i]); ??????
        link.style.color = "red";
        link.innerHTML="texte du lien";
        document.getElementById("ou").appendChild(link);
    </script>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 14:34
je peux pas l'appeler dans une div ... c'est une cellule d'un tableau .. d'où le titre du sujet ;)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 14:51
c'est un exemple ! à la place du div, met ton td !
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 15:20
bon ben soit, j'ai essayé et j'ai lui est donc rajouter une id mais ca bug sur

document.getElementById(id).appendChild(link);
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 15:38
et que contient id ?
parce que c'est une variable, pas une chaîne de caractères
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 15:52
id est alimenté dans la boucle comme suit :

var id = "td"+i
oCell = document.createElement("TD");
oCell.setAttribute("id",id)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 16:12
° setAttribute ne fonctionne pas de la même manière avec tous les navigateurs
          je n'utilise jamais : oCell.id="td"+i; peut-être  ?
          il vaut mieux éviter les noms connus du html/javascript ( var id  )
          un jour ou l'autre ça te posera des problèmes
° doit être fait après l'appendChild du td
° ... ou autre erreur ?
si tu fais correctement, ça doit baigner
vérifie aussi le contenu du l'ID ?
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 16:28
setAttribute je l'utilise déjà et il marche bien avec le nav que j'utilise

si je met oCell.id à la place cela ne change rien, le resultat reste le meme, à savoir que l'id est bon et bel et bien là

 doit être fait après l'appendChild du td

=> qu'est ce qui doit etre faite après l'appendChild ?

code :

var identity = "td"+i
oCell = document.createElement("TD");
oCell.id=identity;
link = document.createElement("a");
link.href = "http://***.***.***/aplocal/Projet.nsf/vueEtape/" + tabidEtap[i] + "?OpenDocument";
link.style.color = "Black";
link.innerHTML = tabNomEtap[i];               
document.getElementById(identity).appendChild(link);
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mars 2009 à 16:39
document.getElementById(identity).appendChild(link);
certes... mais le TD n'a pas encore été créé ( appendChild du TD ) !
donc l'ID n'existe pas encore
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
10 mars 2009 à 17:02
ok donc à la suite de ca je fais donc ceci :

var identity = "td"+i
oCell = document.createElement("TD");
oCell.id=identity;
oRow.appendChild(oCell)
link = document.createElement("a");
link.href = "[http://www.javascriptfr.com/c.aspx?u=aHR0cDovLyoqKi4qKiouKioqL2FwbG9jYWwvUHJvamV0Lm5zZi92dWVFdGFwZS8= [ Lien ]]

" + tabidEtap[i] + "?OpenDocument";
link.style.color = "Black";
link.innerHTML = tabNomEtap[i];               
document.getElementById(identity).appendChild(link);

mais toujours la même erreur sur getElementById ... document.getElementById(...) à la valeur Null ou n'est pas un objet

NB : merci beaucoup à toi pour m'aider dans mon problème :)

Je suis sur ce problème depuis ce matin et ca commence à m'agacer :s
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
10 mars 2009 à 20:49
bonjour
a tu essayer en mettant lastChild ou  firstChild

oRow.lastChild.appendChild(oCell)

document.getElementById(identity).lastChild.appendChild(link);
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
11 mars 2009 à 09:05
bah...



<script>
var i=0;
var identity = "td"+i
var oCell = document.createElement("TD");
oCell.id=identity;
var oRow=document.getElementById("l");
oRow.appendChild(oCell);
var link = document.createElement("a");
link.href = "sur http://www.javascriptfr.com";
link.style.color = "Black";
link.innerHTML = "codes sources";
document.getElementById(identity).appendChild(link);
</script>

ton erreur est probablement "ailleurs" ( quoique ? )
j'ai mis i=0 et oRow=document.getElementById("l");
un <tr> tand un <table>
et ça baigne
@+
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
11 mars 2009 à 09:39
c'est bon j'ai trouvé :)

désolé Bul3, mais t'as solution qui, je te fais confiance, doit être juste ne correspondait pas avec mon code
Si tu regarde bien mon code au dépard (qui marche impec) tu vois que tout le tableau est créé avec des createElement et je n'utilisais pas d'id pour le renseigner ... tout ce que je voulais c'était avoir un lien dedans ... donc après quelques minutes de reflexion j'en suis venu à la solution que voici :

oCell = document.createElement("TD");
link = document.createElement("A");
link.href = "http://app01671.cafstrasbourg.cnaf/aplocal/Projet.nsf/vueEtape/" + tabidEtap[i] + "?OpenDocument";
link.style.color = "Black";
link.innerHTML = stock[i][j];
oCell.appendChild(link);
oRow.appendChild(oCell)

et voila nickel ca marche :)

Merci à vous d'avoir prit de votre temps pour m'aider.
++
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
11 mars 2009 à 09:58
ben oui !!! tu n'es pas obligé d'utiliser un ID ! bien sûr !
j'ai du te dire quelque part , utilise :
soit ID mais après appenChild du TD
soit oCell
@+
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
11 mars 2009 à 10:19
heu ouai peut etre mais pas aussi explicite ^^
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
11 mars 2009 à 10:28
ben ??? tu n'utilisais pas déjà dans ton script cette manière de faire  ?!?
0
cs_san67 Messages postés 17 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
11 mars 2009 à 11:13
si si mais en faite, avec les recherches que j'avais faite sur le createElement("a"), je ne voyais en exemple toujours la même méthode avec le getElementById ... et comme j'y arrivais pas à ma facon ni avec le getElementById ... je fus confus ^^

en faite au dépard cela ne marchait pas car je ne me situais pas au bon endroit dans mon code
(hier je devais vraiment avoir la tête dans le cul )
0
Rejoignez-nous