2010-02-04 7 views
1

Mon code fonctionne bien dans FireFox mais mes utilisateurs sont limités à IE. IE, lié à ma fonction JQUERY

populateTable:function(returnList) { 


    var self = this; 
    var eat = $.evalJSON(returnList.firstChild.textContent) 
    $.each(eat,function() { 


$("<tr><td>" + this.reportId + "</td><td>" + this.description + "</td><td>" + 
this.drawingNumber + "<td></tr>").insertAfter(self.tblResults[0].childNodes[1]); 

}) 


} 

IE erre sur le .each de $ avec le message ci-dessous.

« Longueur » est nulle ou non un objet

Toutes les idées ou peut-être un solution de contournement pour la fonction $ .each?

Mise à jour: returnList est un objet de document XML issu d'un appel Ajax. J'essaie de récupérer la chaîne d'objet JSON située dans la balise XML.

+1

Veuillez poster l'appel $ .each() entier ... ne peut pas dire quel est le problème quand nous ne savons pas ce que vous exécutez. –

+0

voir si le 'returnList.firstChild.textContent' retourne un tableau ou pas? Par votre déclaration, puis-je supposer que cela fonctionne dans FF et d'autres? –

+0

oui ça marche dans FireFox et Chrome. Just not IE –

Répondre

3

Votre problème réside probablement dans cette ligne

returnList.firstChild.textContent 

Depuis returnList est un objet DOM XML, Internet Explorer parcourt et accède au contenu différent de le reste du monde réel (c.-à-d. FF, etc.). Donc, je voudrais mettre plus de jQuery pour faire le travail de jambe pour vous.

$(returnList).find('string').text(); 

Cela devrait vous retourner votre chaîne JSON dans all browsers supported by jQuery.

De même, si vous essayez d'insérer une ligne, vous y parvenez d'une manière étrange. self.tblResults En supposant que [0] est la table objet DOM que vous souhaitez ajouter votre ligne, essayez ceci:

$(self.tblResults[0]).append("<tr><td>" + this.reportId + "</td><td>" + this.description + "</td><td>" + this.drawingNumber + "</td></tr>"); 
+0

Cela a résolu le problème. –

0

Votre balise de fermeture « td » manque une barre oblique

+2

correct mais ne pas aider mon erreur –

0

Si tblResult est une table, il aura qu'un seul nœud enfant, un <tbody> dans IE (à moins parfois, je ne sais pas si c'est toujours le cas).

1

J'ai eu le même problème en utilisant jquery 1.6.2. J'ai changé dans la jquery (version minimisée), la méthode each pour faire une solution de contournement jusqu'à ce qu'ils corrigent le bug (Ticket # 9974) et cela a très bien fonctionné pour moi.

à charbon 12361 sur jquery-1.6.2.min.js i ajouté cette condition: if(!a)return;

Ainsi, le code de ce omble chevalier ressemblait:

each:function(a,c,d){if(!a)return;var f,g=0,h=a.length,i=h===b||e.isFunction(a);

au lieu de:

each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);

Espérons que cela aide quelqu'un.

+1

l'erreur était "longueur" est un null ou pas un objet –

Questions connexes