2010-08-21 57 views
2

我有一大堆divs,它們有一個名爲ofint的類。他們每個人都可能有其他課程。我想存儲有關每個div的信息,然後打印出來。在jquery中創建和打印數組

因此,我試圖循環遍歷類ofint的所有div,並將div id及其classes存儲在一個數組中。我的想法是,我將在稍後搜索數組,但現在我需要創建它並確保它存儲正確的信息。

我有一些想法如何到達那裏,但不能完全做到這一點。如何完成此操作,然後打印陣列以進行雙重檢查?

var myarr = new array; 
$(".ofint").each(function(){ 
    //store the div id and div classes in the array 
    myarr[this.id][classes] = //the list of classes; 
}); 
//print the array here 

回答

6

我認爲你是什麼這樣的事情後:

var myarr = []; 
$(".ofint").each(function(){ 
    myarr.push({ id: this.id, classes: this.className.split(" ") }); 
}); 

你可以做輸出的打印身體,例如:

$.each(myarr, function() { 
    $(document.body).append("ID:<b>"+this.id+"</b> - " + 
          this.classes.join(', ') + "<br />"); 
}); 

You can give it a try here,在這種情況下,我們正在存儲具有2個屬性的對象數組,id和一個類數組,輸出只是循環並將這2個屬性轉儲到頁面。

+0

作品完全相同的方式,我需要它。非常感謝。 – lok 2010-08-21 03:09:12

2

我強烈建議安裝firebug,一個firefox插件。與安裝和它的控制檯激活,然後可以做console.log(myarr);

在控制檯中,您只需點擊剛纔生成的輸出並分析數組。

在我看來療法

是沒有螢火蟲沒有JS開發=)

爲您的方法,這應該很好地工作:

$('.ofint').each(function() { 
    console.log($(this).attr("class")); 
}); 

$('.ofint').each(function() { 
    $("body").append($(this).attr("class")+"<br />"); 
}); 

,如果你只是想撲滅到身體

但你也可以通過fireb分析被操縱的HTML呃也是。

+0

感謝您的提示。 +1 – lok 2010-08-21 03:17:28

3

正如我之前在SO中回答的那樣,如果您使用的是Mozilla Firefox,那麼alert(myarr.toSource())應該足以實現簡單的調試目的。如果您已經有用於打印調試值的div,則也可以執行$('#debugconsole').text(myarr.toSource())

否則考慮安裝Firebug的,因爲它帶有更多的調試工具(如調整當場你的HTML元素看到的變化)

+0

偉大的提示。使調試變得如此簡單。 +1 – lok 2010-08-21 03:16:45

4

尼克Craver已經給你一個解決方案,但我只是張貼這指出一些錯誤,在原始代碼:

  1. JavaScript是大小寫敏感的:它Array,不array。速記符號[]也是等同的。
  2. 您正在嘗試使用myarr作爲二維數組,即myarr[this.id][classes]:首先,你需要初始化內部數組,就像外部數組一樣,其次,classes應該是一個字符串,因爲你想以它的名字來存儲它。

所以你原來的代碼應該是這個樣子:

var myarr = []; 
// OR 
var myarr = new Array(); 

$('.ofint').each(function() { 
    myarr[this.id] = []; // creating the inner array here 

    myarr[this.id]['classes'] = /* list of classes */; 
    // OR 
    myarr[this.id].classes = /* list of classes */; 
}); 
+0

感謝您的澄清。 – lok 2010-08-21 03:08:26