Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1266 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE

n°1540170
serman
Posté le 08-04-2007 à 12:12:21  profilanswer
 

Bonjour tout le monde. Je fais appel pour la première fois à vos lumières car cette fois-ci, je ne trouve pas du tout la solution dans les multiples participations de ce forum.  
 
L'object de mon problème :  
J'ai voulu me mettre au DOM en créant un tableau, car innerHTML est assez lourd à manipuler dans ce cas là, même si ça marche (j'ai essayé).  
 
Voici le code :  
 

Code :
  1. //Créer l'objet objTabExif
  2. objTabExif = document.createElement("table" );
  3. objTabExif.setAttribute("id","tabExif" );
  4. //création des lignes et ajout au tableau
  5. //marque
  6. trExif = new CreateTrExif("Marque de l'appareil", marque.item(num).firstChild.nodeValue);//au lieu de data
  7. objTabExif.appendChild(trExif);
  8. //modele
  9. trExif = new CreateTrExif("Modèle", modele.item(num).firstChild.data);
  10. objTabExif.appendChild(trExif);
  11. //focale
  12. trExif = new CreateTrExif("Focale utilisée", focReelle.item(num).firstChild.data+" mm" );
  13. objTabExif.appendChild(trExif);
  14. //foc equi
  15. trExif = new CreateTrExif("équivalent en 35 mm à ", focEquiv.item(num).firstChild.data+" mm" );
  16. objTabExif.appendChild(trExif);
  17. //ouverture
  18. trExif = new CreateTrExif("Ouverture", ouverture.item(num).firstChild.data);
  19. objTabExif.appendChild(trExif);
  20. //temsp de pose
  21. trExif = new CreateTrExif("Temps de pose", tempsPose.item(num).firstChild.data+" s" );
  22. objTabExif.appendChild(trExif);
  23. //iso
  24. trExif = new CreateTrExif("sensibilité", iso.item(num).firstChild.data+" ISO" );
  25. objTabExif.appendChild(trExif);
  26. //programme
  27. trExif = new CreateTrExif("Programme", programme.item(num).firstChild.data);
  28. objTabExif.appendChild(trExif);
  29. //corr expo
  30. trExif = new CreateTrExif("Correction d'exposition", corrExpo.item(num).firstChild.data+" ev" );
  31. objTabExif.appendChild(trExif);
  32. //date pdv
  33. trExif = new CreateTrExif("Photo prise le", datePdv.item(num).firstChild.data);
  34. objTabExif.appendChild(trExif);
  35. //date bdd
  36. trExif = new CreateTrExif("Sur le site depuis le", dateBdd.item(num).firstChild.data);
  37. objTabExif.appendChild(trExif);
  38. //enfin : ajout du tableau au calque ou remplacement de l'ancien tableau
  39. if(document.getElementById("exif" ).hasChildNodes()){
  40.  ancTabExif = document.getElementById("exif" ).firstChild;
  41.  document.getElementById("exif" ).replaceChild(objTabExif, ancTabExif);
  42.  }
  43. else{
  44.  document.getElementById("exif" ).appendChild(objTabExif);
  45.  }


Et voici la fonction CreateTrExif :  

Code :
  1. function CreateTrExif(txtItem, txtData)//crée une ligne à deux colonnes (gauche, id="itmeExif" ; dr, id="dataExif" )
  2. {
  3. var trExif = document.createElement("tr" );
  4. var itemExif = document.createElement("td" );
  5. itemExif.setAttribute("class","itemExif" );
  6. var item = document.createTextNode(txtItem);
  7. itemExif.appendChild(item);
  8. trExif.appendChild(itemExif);
  9. var dataExif = document.createElement("td" );
  10. dataExif.setAttribute("class","dataExif" );
  11. var data = document.createTextNode(txtData);
  12. dataExif.appendChild(data);
  13. trExif.appendChild(dataExif);
  14. return trExif;
  15. }


 
 
Mon problème : le tableau s'affiche correctement sous FF, exactement comme je veux.  
Sous IE, rien, blanc, nada.  
 
Bien sûr, ça fait deux jours que je cherche ce qui chatouille Bill Gates : par exemple, les "alert" m'affiche bien le contenu de chaque case dans IE. Donc le programme fonctionne, pas d'erreur de code (je dis cela avec prudence vu que j'ai deux mois d'expérience).  
 
Le seul pb semble l'affichage à l'écran. Et là, je sèche...
 
Quelqu'un a-t-il un début de solution ? Merci d'avance.

mood
Publicité
Posté le 08-04-2007 à 12:12:21  profilanswer
 

n°1540586
serman
Posté le 10-04-2007 à 09:37:36  profilanswer
 

Petit up du début de semaine... :hello:

n°1540604
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-04-2007 à 10:04:05  profilanswer
 

Après ton append/replace de objTabExif rajoute juste la ligne suivante:

Code :
  1. document.getElementById("exif" ).innerHTML += '';


Parfois IE ne rafraichit pas l'affichage de la page lors de manipulations DOMs, la ligne dessus "force" ce rafraichissement.

n°1540636
nonau57
Posté le 10-04-2007 à 10:30:01  profilanswer
 

Sur IE, il faut ajouter un element TBODY contenant chaque TR

n°1540643
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-04-2007 à 10:48:27  profilanswer
 

nonau57 a écrit :

Sur IE, il faut ajouter un element TBODY contenant chaque TR


:??:

n°1540644
flo850
moi je
Posté le 10-04-2007 à 10:49:23  profilanswer
 

nonau57 a écrit :

Sur IE, il faut ajouter un element TBODY contenant chaque TR


il faut pas plutot ajouter 1 element tbody contenant tous les TR ?

 

sémantiquement ca me parait plus juste

 

et innerhtml ne fonctionne pas dans un tableua sous IE

Message cité 3 fois
Message édité par flo850 le 10-04-2007 à 10:49:53
n°1540649
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-04-2007 à 10:54:45  profilanswer
 

flo850 a écrit :

et innerhtml ne fonctionne pas dans un tableua sous IE


tombe bien c'est sur le div conteneur que je disais de le faire [:dawak]
Démo pour arrêter les digressions:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8. function CreateTrExif(txtItem, txtData)//crée une ligne à deux colonnes (gauche, id="itmeExif" ; dr, id="dataExif" )
  9. {
  10.   var trExif = document.createElement("tr" );
  11.   var itemExif = document.createElement("td" );
  12.   itemExif.setAttribute("class","itemExif" );
  13.   var item = document.createTextNode(txtItem);
  14.   itemExif.appendChild(item);
  15.   trExif.appendChild(itemExif);
  16.   var dataExif = document.createElement("td" );
  17.   dataExif.setAttribute("class","dataExif" );
  18.   var data = document.createTextNode(txtData);
  19.   dataExif.appendChild(data);
  20.   trExif.appendChild(dataExif);
  21.   return trExif;
  22. }
  23. window.onload = function () {
  24.   objTabExif = document.createElement("table" );
  25.   objTabExif.setAttribute("id","tabExif" );
  26.   //création des lignes et ajout au tableau
  27.   //marque
  28.   trExif = new CreateTrExif("Marque de l'appareil", "toto" );//au lieu de data
  29.   objTabExif.appendChild(trExif);
  30.   //modele
  31.   trExif = new CreateTrExif("Modèle","tata" );
  32.   objTabExif.appendChild(trExif);
  33.   //focale
  34.   trExif = new CreateTrExif("Focale utilisée", "titi" );
  35.   objTabExif.appendChild(trExif);
  36.   //foc equi
  37.   trExif = new CreateTrExif("équivalent en 35 mm à ", "tutu" );
  38.   objTabExif.appendChild(trExif);
  39.   //ouverture
  40.   trExif = new CreateTrExif("Ouverture", "tyty" );
  41.   objTabExif.appendChild(trExif);
  42.   //temsp de pose
  43.   trExif = new CreateTrExif("Temps de pose", "tete" );
  44.   objTabExif.appendChild(trExif);
  45.   //iso
  46.   trExif = new CreateTrExif("sensibilité", "zozo" );
  47.   objTabExif.appendChild(trExif);
  48.   //programme
  49.   trExif = new CreateTrExif("Programme", "zizi" );
  50.   objTabExif.appendChild(trExif);
  51.   //corr expo
  52.   trExif = new CreateTrExif("Correction d'exposition", "zuzu" );
  53.   objTabExif.appendChild(trExif);
  54.   //date pdv
  55.   trExif = new CreateTrExif("Photo prise le", "zaza" );
  56.   objTabExif.appendChild(trExif);
  57.   //date bdd
  58.   trExif = new CreateTrExif("Sur le site depuis le","zezez" );
  59.   objTabExif.appendChild(trExif);
  60.   //enfin : ajout du tableau au calque ou remplacement de l'ancien tableau
  61.   if(document.getElementById("exif" ).hasChildNodes()){
  62.     ancTabExif = document.getElementById("exif" ).firstChild;
  63.     document.getElementById("exif" ).replaceChild(objTabExif, ancTabExif);
  64.   } else{
  65.     document.getElementById("exif" ).appendChild(objTabExif);
  66.   }
  67.   document.getElementById("exif" ).innerHTML += '';
  68. }
  69.   </script>
  70. </head>
  71. <body>
  72. <div id="exif"></div>
  73. </body>
  74. </html>


 
 

n°1540723
Shinuza
This is unexecpected
Posté le 10-04-2007 à 13:47:47  profilanswer
 

flo850 a écrit :

il faut pas plutot ajouter 1 element tbody contenant tous les TR ?

 

sémantiquement ca me parait plus juste

 

et innerhtml ne fonctionne pas dans un tableua sous IE


S'toutafé ça

 

Si je suis pas trop fatigué :

Code :
  1. <table>
  2. <summary></summuray>
  3. <thead>
  4.  <tr>
  5.   <th></th>
  6.  </tr>
  7. </thead>
  8. <tbody>
  9.  <tr>
  10.   <td></td>
  11.  </tr>
  12. </tbody>
  13. </table>


Message édité par Shinuza le 10-04-2007 à 13:48:04

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1540731
flo850
moi je
Posté le 10-04-2007 à 14:07:14  profilanswer
 

anapajari > je repondais a totau  
et sinon, une question con : pourquoi tu fasi un new devant un appel de fonction ? ( en l'occurence createTrExif()  
 
shinuza > pour en rajouter une couche  tu peux avoir autant de tbody que voulu
et tu as aussi un element tfoot  qui est utile. Par contre je suis pas sur que IE gere tout bien

n°1540747
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-04-2007 à 14:22:45  profilanswer
 

flo850 a écrit :

anapajari > je repondais a totau  
et sinon, une question con : pourquoi tu fasi un new devant un appel de fonction ? ( en l'occurence createTrExif()  


s'pas moi c'est serman qu'a commencé :o
En fait en js permet aussi de déclarer des "classes". A ce moment là, l'appel se fait avec new.
Moi j'ai juste repris  le code posté plus haut, il s'en servait ainsi.
 
Maintenant c'est vrai qu'une classe nommée CreateTrExif c'est du grand nawak, d'autant qu'il ne se sert jamais du this ( qui devrait être l'objet retourné par sa méthode). [:spamafote]

mood
Publicité
Posté le 10-04-2007 à 14:22:45  profilanswer
 

n°1540924
serman
Posté le 10-04-2007 à 17:30:54  profilanswer
 

Je viens d'essayer le truc d'anapajari et ça marche parfaitement.  
 
Respect messieur  :jap:  :jap:  :jap:  
 
Je ne l'aurais jamais inventé !

n°1540931
serman
Posté le 10-04-2007 à 17:44:05  profilanswer
 

anapajari a écrit :

s'pas moi c'est serman qu'a commencé :o
En fait en js permet aussi de déclarer des "classes". A ce moment là, l'appel se fait avec new.
Moi j'ai juste repris  le code posté plus haut, il s'en servait ainsi.
 
Maintenant c'est vrai qu'une classe nommée CreateTrExif c'est du grand nawak, d'autant qu'il ne se sert jamais du this ( qui devrait être l'objet retourné par sa méthode). [:spamafote]


 
Le grand nawak vient certainement du fait que c'est ma première création DOM et mon ancienneté dans la conception de site remonte au 2 février 2007. Quand ça s'est affiché sous FF, j'ai été le premier surpris d'avec réussi en 30 mn !
Là où je te suis, c'est que j'ai effectivement cherché à utiliser le fameux "this" (pour faire comme il dit dans mon bouquin : un "constructeur" et il utilisait bien un "new", d'où ma déclaration) mais j'ai foiré et donc j'ai abandonné...pour le moment, hein !  
 
Si quelqu'un peut m'expliquer comment il faut faire (ou m'indiquer une référence accessible sur le sujet), je suis preneur !
 
Si mon "new" ne sert à rien, merci pour l'info et je le vire.  
 
L'intérêt que je trouve dans cette méthode, c'est que chaque ligne est ajoutée de façon claire, facile à modifier et peu importe l'ordre. Ensuite, chaque nom de classe est indiqué qu'une seule fois, ce qui simplifie à mon avis les maintenances futures.  
Mais bon, encore une fois, je débute et le DOM n'est pas ce que j'ai trouvé de plus facile pour démarrer.

n°1540935
serman
Posté le 10-04-2007 à 17:47:31  profilanswer
 

Au fait merci des participations des autres. Pour l'histoire du tbody, le navigateur semble s'en foutre donc j'ai pas essayé. Ceci dit, pour moi, il me semble que tbody n'a d'utilité que si il y a un thead ou un tfoot. Sinon, on s'en fout, non ?

n°1540936
serman
Posté le 10-04-2007 à 18:02:26  profilanswer
 

flo850 a écrit :

il faut pas plutot ajouter 1 element tbody contenant tous les TR ?
 
sémantiquement ca me parait plus juste  
 
et innerhtml ne fonctionne pas dans un tableua sous IE


Faux ! Désolé, mais c'est la solution lourdingue que j'ai employé en attendant le messie anapajari et ça marche, aussi bien sous FF que IE :  
 

Code :
  1. document.getElementById("exif" ).innerHTML = "<table id=\"tabExif\"><tr><td class=\"itemExif\">Marque de l'appareil</td><td class=\"dataExif\">"+marque.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Modèle</td><td class=\"dataExif\">"+modele.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Focale utilisée</td><td class=\"dataExif\">"+focReelle.item(num).firstChild.data+" mm</td></tr><tr><td class=\"itemExif\">équivalant en 35 mm</td><td class=\"dataExif\">"+focEquiv.item(num).firstChild.data+" mm</td></tr><tr><td class=\"itemExif\">Ouverture</td><td class=\"dataExif\">"+ouverture.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Temps de pose</td><td class=\"dataExif\">"+tempsPose.item(num).firstChild.data+" s</td></tr><tr><td class=\"itemExif\">ISO</td><td class=\"dataExif\">"+iso.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Programme</td><td class=\"dataExif\">"+programme.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Correction d'exposition</td><td class=\"dataExif\">"+corrExpo.item(num).firstChild.data+" ev</td></tr><tr><td class=\"itemExif\">Date</td><td class=\"dataExif\">"+datePdv.item(num).firstChild.data+"</td></tr><tr><td class=\"itemExif\">Entrée sur le site le</td><td class=\"dataExif\">"+dateBdd.item(num).firstChild.data+"</td></tr></table>" ;


 
D'ailleurs et dans ce cas, on ne peut même pas couper les lignes en utilisant :  
document.getElementById("exif" ).innerHTML += et ligne suivante, il faut écrire tout d'un seul tenant (lourdingue, je vous dis).  
 
C'est d'abord pour cela que je me suis mis au DOM dans un premier temps.

n°1540949
flo850
moi je
Posté le 10-04-2007 à 19:08:02  profilanswer
 

j'ai bien dis , dans un tableau
 
la tu remplace le contenu d'un div  
 
essaye de modifier document.getElementById("tabExif" ).innerHTML  ou de modifier un tr en particulier  
 
sinon tu fais  
var contenu ='';
contenu +='premiere ligne';
contenu +='deuxieme ligne';
 
ca améliore la lisibilité

n°1541003
serman
Posté le 10-04-2007 à 21:29:24  profilanswer
 

flo850 a écrit :

j'ai bien dis , dans un tableau
 
la tu remplace le contenu d'un div  
 
essaye de modifier document.getElementById("tabExif" ).innerHTML  ou de modifier un tr en particulier  
 
sinon tu fais  
var contenu ='';
contenu +='premiere ligne';
contenu +='deuxieme ligne';
 
ca améliore la lisibilité


Ah OK j'avais pô compris.  :D  
 
Pour la solution que tu préconises, il me semble avoir essayé dans un premier temps, mais sans succés, c'est pour ça que je suis passé au DOM (d'ailleurs, je trouve que c'est plus élégant, question d'habitude).

n°1541022
flo850
moi je
Posté le 10-04-2007 à 22:10:56  profilanswer
 

le dom est un peu plus elegant ( carrement plus )  , mais a des limites:
il est un peu plus lent a générer
tu ne peux pas générer des input

n°1541027
Shinuza
This is unexecpected
Posté le 10-04-2007 à 22:15:24  profilanswer
 

Ca dépend combien d'élements tu emboites/ajoutes, mais certaines fois il vaut mieux utiliser innerHTML.
Pour ma part je n'ai jamais généré assez d'éléments pour visualiser une quelconque lenteur.

 

Edit : French for dummies ça existe?


Message édité par Shinuza le 10-04-2007 à 22:26:06

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1541029
flo850
moi je
Posté le 10-04-2007 à 22:22:43  profilanswer
 

en ce moment, je "joue" avec un tableau qui a 20 colonnes, 5 000 lignes  
je n'en affiche que 25 ( soit quand meme 500 cases, chacune contenant  du gras, des liens, de l'italique , ....  ), avec des fleches de défilements, et un slider pour permettre de naviguer au sein du tableau  
 
les données sont instanciées a la demande ( xml httprequest dans tous les coins )  
 
le système est un peu plus réactif avec innerHTML qu'avec dom

n°1541059
serman
Posté le 10-04-2007 à 23:09:36  profilanswer
 

flo850 a écrit :

en ce moment, je "joue" avec un tableau qui a 20 colonnes, 5 000 lignes  
je n'en affiche que 25 ( soit quand meme 500 cases, chacune contenant  du gras, des liens, de l'italique , ....  ), avec des fleches de défilements, et un slider pour permettre de naviguer au sein du tableau  
 
les données sont instanciées a la demande ( xml httprequest dans tous les coins )  
 
le système est un peu plus réactif avec innerHTML qu'avec dom


Pour ajouter un input, que penses-tu de repérer la case avec un id généré en DOM (en utilisant setAttribute) et ensuite appliquer un innerHTML à cette case ?

n°1541130
flo850
moi je
Posté le 11-04-2007 à 09:17:12  profilanswer
 

ca devriat marcher  
mais par habitude, j'evite de melanger dom /innerHTML  
 
ce que je veux dire , c'est qu'il n'y a pas de solutions miracle , donc il faut etre conscient des limitations de ces deux methodes

n°1541137
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-04-2007 à 09:24:19  profilanswer
 

flo850 a écrit :

en ce moment, je "joue" avec un tableau qui a 20 colonnes, 5 000 lignes  
je n'en affiche que 25 ( soit quand meme 500 cases, chacune contenant  du gras, des liens, de l'italique , ....  ), avec des fleches de défilements, et un slider pour permettre de naviguer au sein du tableau  
les données sont instanciées a la demande ( xml httprequest dans tous les coins )  
le système est un peu plus réactif avec innerHTML qu'avec dom


un peu plus réactif comme dans "ça fout l'ordi totalement à la ramasse quelle que soit la méthode?" :o
J'ai jamais fait aussi gros ( d'ailleurs je vois pas l'interet), mais j'avais fait 10 colonnes/500 lignes regroupées par bloc de 25 lignes ( résultat d'une recherche, groupé par page).
Et bin après de nombreux tests, le plus rapide était de générer tout le tableau dès le départ, de faire 20 tbody de 25 lignes et de joueur uniquement sur le display de ceux-ci.
 

serman a écrit :

Pour ajouter un input, que penses-tu de repérer la case avec un id généré en DOM (en utilisant setAttribute) et ensuite appliquer un innerHTML à cette case ?


Perso, j'ai tendance à le faire full dom je trouve ça plus aisé pour gérer les events. Mais Master Masklinn lui préfère innerHTML. C'est une question de gout... [:spamafote]

n°1541140
flo850
moi je
Posté le 11-04-2007 à 09:32:17  profilanswer
 

anapajari a écrit :

un peu plus réactif comme dans "ça fout l'ordi totalement à la ramasse quelle que soit la méthode?" :o
J'ai jamais fait aussi gros ( d'ailleurs je vois pas l'interet), mais j'avais fait 10 colonnes/500 lignes regroupées par bloc de 25 lignes ( résultat d'une recherche, groupé par page).
Et bin après de nombreux tests, le plus rapide était de générer tout le tableau dès le départ, de faire 20 tbody de 25 lignes et de joueur uniquement sur le display de ceux-ci.


j'ai le choix de la méthode à utiliser, mais pas celui de l'appli a réaliser :/
le but est de réaliser en full web l'équivalent d'un client lourd :cry: : un annuaire avec un fonctionnement comme itunes : a mesure que tu tape, ca reduit le tableau des resultats + possibilité d'utiliser un slider et des tris  
 
en ojouant avec de la lazy instantiation , des requetes XML asynchrones j'arrive a rester dans des temps de reponses corrects ( moins d'une seconde dans le pire des cas ) et le passge dom=> innerhtml m'a fait gagner un petit peu de temps , mais a rendu le code moins lisible  

anapajari a écrit :


Perso, j'ai tendance à le faire full dom je trouve ça plus aisé pour gérer les events. Mais Master Masklinn lui préfère innerHTML. C'est une question de gout... [:spamafote]


perso ca depend :  
jouer avec la mise en page la structure de la page => dom
gros volume de texte a changer => innerhtml
 
plus les situations où on a pas trop le choix ( ajout d'un input => innerhtml , modification d'une ligne d'un tableau => dom )

n°1541144
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-04-2007 à 09:37:21  profilanswer
 

flo850 a écrit :


perso ca depend :  
jouer avec la mise en page la structure de la page => dom
gros volume de texte a changer => innerhtml


/me agrees
 

flo850 a écrit :

plus les situations où on a pas trop le choix ( ajout d'un input => innerhtml , modification d'une ligne d'un tableau => dom )


Je comprends pas ce mythe de l'ajout d'un input ne peut se faire que via innerHTML!!!
1- ça marche très bien en DOM ( tous navigateurs, même pour l'id et toussa)
2- je trouve ça bien plus pratique pour ajouter des events ( comme je le disais juste avant)

n°1541187
flo850
moi je
Posté le 11-04-2007 à 11:09:33  profilanswer
 

tests perso :

 

version dom :

Code :
  1. td = document.createElement('td');
  2. input = document.createElement("input" );
  3. input.type="radio";
  4. input.name='t_action_'+ligne_courante;
  5. input.value='membre';
  6. input.checked = true;
  7. td.appendChild(input);
  8. tr.appendChild(td);
 

version innerHTML +dom : (parceque innerhtml seul ne fonctionne pas sur un tr, table , tbody )

Code :
  1. td = document.createElement('td');
  2. td.innerHTML = '<input type="radio" name="t_action_'+ligne_courante+'" value="membre" checked>';
  3. tr.appendChild(td);
 

la version innerHTML fonctionne sous IE , l'autre fait bien apparaitre les inputs, mais ils ne sont pas cliquables

 


Message édité par flo850 le 11-04-2007 à 11:11:09
n°1541224
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-04-2007 à 11:59:59  profilanswer
 

j'aurais du me douter que tu allais me sortir l'exemple du radio qui effectivement ne marche pas  "directement".
Tu noteras tout de même que via une redéfinition de l'event onclick, il n'y a plus de probleme:

Code :
  1. input.onclick = function (){
  2.       this.checked = ! this.checked;
  3.     }

n°1541382
flo850
moi je
Posté le 11-04-2007 à 15:30:50  profilanswer
 

pas fait expres, c'est un pb sur lequel je me suis pris la tete en fin de semaine derniere
je n'ai meme aps penser a utiliser le onclick , tellement j'etais persuadé que ca n'allais pas fonctionner
:jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE

 

Sujets relatifs
acceler le parcour de mon tableautableau a 2 dimensions!!!!!
[Pascal] Length pour tableau ?tri d'un tableau par ordre alphabétique
[résolu]Comment attraper tous les noeud d'un même type dans un tableauforeach pour un tableau
afficher une image BMP a partir d'un tableau de pixelsDégradé dans un tableau...
Probleme recherche tableautableau php vers excel
Plus de sujets relatifs à : [JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR