2010-02-04 55 views
1

我的代碼在FireFox中工作正常,但我的用戶僅限於IE瀏覽器。即,與我的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瀏覽器上的$。每次犯錯誤與下面的消息:

「長度」爲空或不是對象

任何想法或者一個$ .each函數的解決方法?

更新:returnList是來自Ajax調用的XML文檔對象。我試圖檢索位於XML標籤內的JSON對象字符串。

+1

請發佈整個$ .each()調用......當我們不知道您正在運行什麼時,無法說出問題所在。 –

+0

看看'returnList.firstChild.textContent'是否返回一個數組?通過你的陳述,我可以假設它在FF和其他工作? –

+0

是的,它使用FireFox和Chrome。只是不是IE –

回答

3

你的問題可能就出在這行

returnList.firstChild.textContent 

由於returnList是一個XML DOM對象,IE瀏覽器遍歷和訪問來自不同內容現實世界的其餘部分(即FF等)。所以,我會加入更多的jQuery來爲你做腿部工作。

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

這將返回您在all browsers supported by jQuery您的JSON字符串。另外,如果您嘗試插入一行,您將以奇怪的方式進行操作。假設self.tblResults [0]要追加你行,試試這個表DOM對象:

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

這解決了這個問題。 –

0

你最後收「TD」標籤缺少一個斜槓

+2

正確,但沒有幫助我的錯誤 –

0

如果tblResult是一個表,它只有一個子節點,在IE <tbody>(在至少有時候,我不知道情況是否如此)。

1

我有使用jquery 1.6.2相同的問題。 我改變了jquery(最小化版本),each方法來解決這個問題,直到他們解決了錯誤(Ticket#9974)並且它對我很好。

在對jQuery的1.6.2.min.js焦炭12361我加入這個條件:if(!a)return;

所以從這個字符的代碼看起來像:

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

代替:

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

希望它可以幫助別人。

+1

錯誤是'長度'是空或不是對象 –

相關問題