2013-04-03 143 views
0

下面的例子中,前两个返回[对象,对象],但第三回报什么,我希望从第二,这是“下一步”在大多数情况下,数组返回为[object,object]。这是什么意思?

alert(sceChoicesArr); 

alert(sceChoicesArr[0]); 

alert(sceChoicesArr[0].text()); 

这里是正在创建数组:

var sceChoicesArr = []; 

$(xml).find('choice').each(function(){sceChoicesArr.push($(this));}); 

这里的XML的一点它在该行寻找上面:

<choice>Next</choice> 

我想吐出阵列成HTML,我不断WRI除了这个页面上的例子:Display all items in array using jquery以及这个:http://jsfiddle.net/chrisabrams/hYQm4/,但这些例子似乎都没有能够拉出数组内的值,因为当我用警报检查它时, m越来越是[object,object]

所以我的问题是,什么是[对象,对象],以及为什么我会得到,而不是“下一步”?

在我看来,我的数组的唯一价值应该等同于[“下一步”]

+5

这意味着它是一个对象,并且警报不是一个调试工具。 – adeneo 2013-04-03 19:29:19

+0

使用'console.log'而不是'alert',这样你就可以查看整个对象。 – 2013-04-03 19:42:55

回答

1

在代码中,你正在使用sceChoicesArr.push($(this));。这是推动jQuery对象到阵列。

alert被隐式地调用Object.prototype.toStringsceChoicesArr,其中,当在对象上被调用,返回"[object Object]"

而不是使用:

sceChoicesArr.push($(this)); 

使用:

sceChoicesArr.push($(this).text()); 

然后得到一个 “可读” 的形式排列:

sceChoicesArr.join(", ") 

或者继续推动$(this) ,然后得到一个“可读”的表格,使用:

var readableArr = $.map(sceChoicesArr, function (value, index) { 
    return $(value).text(); 
}); 

这将返回一个只有每个元素的文本的新数组。然后,只需使用:

readableArr.join(", ") 

如果你只是想查看您的数组的内容(而不是使用其他地方),你可以使用console.log(sceChoicesArr);应提供您的变量的一个有用的概述。

+0

或者只是使用控制台? – adeneo 2013-04-03 19:46:10

+0

@ adeneo你没有给我足够的时间:)我不确定他们是否想从开发者的角度看它的内容(看屏幕)还是需要它在代码/页面的其他地方 – Ian 2013-04-03 19:51:02

相关问题