2010-08-26 25 views
0

Je pense que je sais que c'est un bug IE ... Je dois ajouter une nouvelle ligne à une table HTML à la position exacte. (ne veulent pas insertRow (index) cuz cela ressemble va être mieux pour d'autres raisons)InvalidArgument avec la méthode insertBefore de Table HTML

function AddNewItem(td) { ///td comes from button at the HTML code, <input ... onclick="AddNewItem(this.parentNode)" 
    var grid = GetGrid(); 
    var itemIndex = $(td.parentNode).attr('index'); 
    ///alert(itemIndex + "'e eklenecek"); 
    var newRow = document.createElement('tr'); 
     var td1 = document.createElement('td');$(td1).addClass('td'); 
     var td2 = document.createElement('td');$(td2).addClass('td text r'); 
     var td3 = document.createElement('td');$(td3).addClass('td text r'); 
     var td4 = document.createElement('td');$(td4).addClass('td text r'); 
    $(newRow).append(td1);$(newRow).append(td2);$(newRow).append(td3);$(newRow).append(td4); 

    grid.insertBefore(newRow, td.parentNode); ///THIS GIVES AN INVALIDARGUMENT error .. Any solutions will be appreciated :) 
} 


function GetGrid() { 
var grid = document.getElementById("MasterTableView"); 
return grid; 
} 
+0

Pourriez-vous expliquer pourquoi vous mélangez DOM normal et jQuery? Et quel est le problème avec insertRow? – RoToRa

+0

Je devrais utiliser jquery's create au lieu de document.Create et tel? Je ne sais pas, je fais des choses avec ce que je connais le mieux. Je ne suis pas le meilleur JS ninja afterall :) – Emre

+0

insertRow veux un index, et ajoute une ligne vide. Après que je dois trouver cette rangée vide et la TD dans le .. je pensais que ce serait moche en premier lieu ... je devrais utiliser insertRow droit? .. Je devrais y aller et faire – Emre

Répondre

0

Mon conjecture est quetd.parentNode est pas un élément enfant de grid. Jetez un oeil à la W3C specification for insertBefore pour vous assurer que vous appelez la méthode avec des paramètres valides.

+0

grille est le tableau HTML, et td.parentNode est le TR qui appartient à cette grille .. – Emre

0

Je suppose que vous passez un argument invalide à AddNewItem, que (dans IE, au moins) ce n'est pas un élément td comme vous le pensez.

+0

ne vous inquiétez pas .. c'est que td comme je pense :) il donne l'innerHTML et plus le tout fonctionne maintenant – Emre