2013-02-01 191 views
0

最终我希望能得到一个对象来显示这样的:创建对象的数组

'0': { 
     '0': { 
       label: 'Book:', 
       content: 'a book name',   
     }, 

     '1': { 
       label: 'Video:', 
       content: 'a video name',   
     }, 

     '2': { 
       label: 'Audio:', 
       content: 'an audio name',   
     },    
    }, 

'1': { 
     '0': { 
       label: 'Book:', 
       content: 'another book name',   
     }, 

     '1': { 
       label: 'Video:', 
       content: 'another video name',   
     }, 

     '2': { 
       label: 'Audio:', 
       content: 'another audio name',   
     },    
    } 

我在http://jsfiddle.net/ScbjL/4/代码并没有变成正确的,我很困惑,为什么objDL是未定义?

+0

它是未定义的,因为objDT.label未定义。您需要指定一个键来选择正确的对象以从中拉出标签。 –

+0

另外,下一行与objDD有相同的问题 - 看起来像缺少下标objDD [i]。 – veritasetratio

回答

1

你不应该重复遍历.container s,dt s和dd s - 你忘记objDT/DD从哪个容器中发出。也可以使用数组而不是结果对象。

var objDL = []; 
$("dl").each(function(i) { 
    objDL[i] = []; 
    $(this).children("dt").each(function(j) { 
     var $this = $(this); 
     objDL[i][j] = { 
      title: $this.text(), 
      description: $this.next("dd").text(); 
     }; 
    }); 
}); 
+0

我只循环两次,其中有三组dt/dd。难道这是闭环问题,我需要弄清楚如何维护objDL循环中的m&n的索引值? – user1824996

+0

对,你想用他们的'.container'对他们进行分组,我错过了。然而,这将是非常复杂的,因为objDT和objDD没有区分这一点。看看我的片段如何做到这一点没有这些 – Bergi

+0

它就像一个魅力!谢谢您的帮助! objDL [i] [j]是一个多维数组吗? – user1824996