2012-11-01 3 views
0

Salut je seulement un problème dans IE9IE9 Javascript table générée

J'ai la boucle Javascript génère une première table

var TABLE = widget.body.getElementsByClassName('classroom')[0]; 
    var TBODY = widget.createElement('tbody'); 

     //generate rows & Cells, 10 x 10 
     var cID = 0; 
     for (var r=0; r<10; r++) { 
      var TR = widget.createElement('tr'); 
       for (var c=0; c<10; c++) { 
        var TD = widget.createElement('td'); 
        //TD.id="c"+cID; 
        TD.setAttribute("class",'c'+cID); 
        TD.setAttribute("id",'c'+cID); 
        TD.setAttribute("style","width:90px;"); 
        TD.setAttribute("style","height:90px;"); 
        cID++; 
        TR.appendChild(TD); 
       } 
       TBODY.appendChild(TR); 
     } 
     TABLE.appendChild(TBODY); 

Ce qui fonctionne très bien

il est appelle alors cette autre fonction peupler la table.

Ceci est juste un extrait des fonctions énormes!

var cell_class = cell.toString(); // it gets the cell from another loop say 'c1' 
var TCell = widget.body.getElementsByClassName(cell_class)[0]; 
TCell.innerHTML="<a href='#'>image</a>"; // it fails at this point 'null or undefined' 

dans le code HTML je

<table id="table1" class="classroom"> 
        <colgroup> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
         <col width="90" height="70"/> 
        </colgroup> 
       </table> 

cela fonctionne si j'ajoute une table statique au HTML mais je veux dynamique.

Cela fonctionne dans tous les navigateurs actuels en dehors de IE9

Quelqu'un peut-il aider

Répondre

0

Y at-il une raison particulière pour ne pas utiliser des modèles jQuery ou un guidon (ou toute autre bibliothèque configurons cette question.) pour vous aider avec une génération dynamique?

Je pense que le problème avec IE est qu'il ne crée pas l'élément TBODY par défaut, sauf si vous l'avez dans le balisage. Je pense que les autres navigateurs créent implicitement cet élément s'il n'est pas présent.

Essayez d'ajouter un élément tbody manuellement dans le balisage.

+0

Je viens d'essayer de cibler le tBody par classe et toujours le même. lorsque vous dites "Ajouter un élément tbody manuellement dans le balisage" Où voulez-vous dire? – ajl80

+0

Quelle est cette classe de widget que vous utilisez? Je recommande fortement d'utiliser une bibliothèque de templates pour cela. Cela pourrait réduire beaucoup de douleur pour vous. – BuddhiP

+0

Je travaille dans un cadre appelé Frog son fondamentalement un CMS. Vous pouvez également créer des widgets Javascript. Il vous suffit de mettre un widget devant votre fonction. Ce qui peut être une douleur, donc ne pas utiliser de modèles externes. – ajl80

Questions connexes