在jquery中创建和打印数组

时间:2010-08-21 01:58:10

标签: javascript jquery

我有一大堆divs有一个名为ofint的类。他们每个人都可能有其他课程。我想存储有关每个div的信息,然后打印出来。

所以我试图遍历类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

4 个答案:

答案 0 :(得分: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和一个类数组,输出只是循环并将这两个属性转储到页面

答案 1 :(得分:4)

Nick Craver已经为您提供了一个解决方案,但我只是发布此信息来指出原始代码中的一些错误:

  1. JavaScript区分大小写:它是Array,而不是array。简写符号[]也是等效的。
  2. 您尝试将myarr用作二维数组,即myarr[this.id][classes]:首先,您需要像外部数组一样初始化内部数组,其次,{{1}应该是一个字符串,因为你想将它存储在那个确切的名称下。
  3. 所以你原来的代码应该是这样的:

    classes

答案 2 :(得分:3)

正如我之前在SO中所说的那样,如果您使用的是Mozilla Firefox,alert(myarr.toSource())应足以满足简单的调试目的。如果您已经有一个用于打印调试值的div,也可以$('#debugconsole').text(myarr.toSource())

否则考虑安装Firebug,因为它附带了更多的调试工具(比如在现场调整HTML元素以查看更改)

答案 3 :(得分:2)

我强烈建议安装firebug,一个firefox插件。安装完成并且其控制台激活后,您可以执行console.log(myarr);

在控制台中,只需单击刚生成的输出并分析数组即可。

在我看来,没有firebug,没有js开发=)

对于你的方法,这应该可以正常工作:

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

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

如果你只是想要身体

但你也可以通过firebug分析操作的html。