2010-08-21 40 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