2012-06-26 29 views
1

我試圖加載具有特定類到一個數組的所有div的文字,但這種放內容如何獲得這些錯誤信息

var temp = $('.theClass').text(); 
    temp = temp.toArray(); 
    console.log(temp); 

保持給我的錯誤

Uncaught TypeError: Object has no method 'toArray'

而且

var tempArr = []; 
var temp = $('.theClass').text(); 

for (var t in temp){ 

    tempArr.push(t); 
} 
console.log(tempArr); 

結果在一個數組中填充了很多很多對象,只是用整數填充。 screenshot of chrome console

如何正確地做到這一點的解釋可以找到here,但我不知道是否有人可以提供我解釋爲什麼我得到這些錯誤。謝謝!

+0

'.text()'返回一個字符串....爲什麼你只是在你鏈接的答案中使用代碼? – Esailija

+0

@Esailija我不想弄清楚如何做到這一點,我試圖理解爲什麼這些方法不起作用。也許瞭解更多關於如何jQuery和JavaScript的工作.. – 1252748

回答

2

您可以使用map到匹配集的每個元素遍歷並返回一些數據(在這種情況下,文本)。然後,您可以使用get所得到的jQuery對象轉換成實際的數組:

var arr = $('.theClass').map(function() { 
    return $(this).text(); 
}).get(); 

你的第一次嘗試失敗,因爲text方法返回一個字符串和字符串沒有toArray方法(因此你的「對象有沒有方法「錯誤)。因爲你遍歷與for...in迴路串

你的第二次嘗試失敗。該循環遍歷字符串的字符。每個迭代t都被分配了字符的索引,所以最終會有一個數組,每個字符在字符串中包含一個元素。您應該永遠不會使用for...in循環遍歷對象屬性以外的任何東西,即使如此,您也應該始終包含一個hasOwnProperty檢查。

+0

謝謝!這是一個完美的解釋。 – 1252748

+0

@thomas - 不客氣,很高興我能幫忙:) –