2012-02-20 37 views
1
var arr = $(".producttypeid"); 
var premiumtypecodes = Array(arr.length); 
for (var i = 0; i < arr.length; i++) 
    premiumtypecodes[i] = arr[i].value; 

上述代码看起来不起作用。目的是将输出分配给一个数组。任何我缺少的东西。 为什么这个简单的代码不起作用?推理将受到高度赞扬....将选择器输出分配给数组 - jQuery

基于反馈,我添加了示例标记并添加了详细信息,以使我的意图不受任何干扰。

<input class="producttypeid" type="hidden" value="512"> 

我想用风格producttypeid数组

+0

可能是因为选定的DOM元素不是表单元素,因此没有'value'属性。 '.producttypeid'是什么样的元素? – 2012-02-20 12:16:18

+0

只是一个想法:你确定你需要转换吗?包装组基本上是一个数组,也许你可以直接使用arr? – 2012-02-20 12:19:37

+0

向问题添加更多数据。我只需要捕获值属性。这里是示例标记 2012-02-20 12:43:14

回答

3

这里提取所有标签的价值,并是我怎么会做它:

var arr = $(".producttypeid"); 
var premiumtypecodes = []; 
arr.each(function(index) { 
    premiumtypecodes[index] = this.value; 
}); 

即假定所有匹配的元素都input元素(因为使用了value)。如果他们中的一些可能是textareaselect元素,然后换行迭代函数里面:

premiumtypecodes[index] = $(this).val(); 

如果他们没有形成在所有领域,你必须确定你的意思是什么他们的“价值“(例如,你可以使用$(this).text()来获得他们的文本内容,或$(this).html()获得他们的标记,或完全是其他的东西)。

我没有立即看到你的版本比你少的ivar其他任何问题:

for (var = 0; i < arr.length; i++) 
//  ^--- here 

除此之外,它应该有工作,但要注意的是,虽然Array(arr.length)作品,通常编写它的方法是new Array(arr.length)(并且没有必要预先设置长度; JavaScript数组aren't really arrays,所以你没有得到通常的好处)。

+0

修复了代码中的错字..正在尝试我机器上的各种组合。忘记为我想描述的问题正确编辑。谢谢 – 2012-02-20 12:16:17

+0

@ user129206:如果上述内容没有对它进行排序,您将不得不创建一个最小复制测试用例并将其发布到问题中(并且理想情况下也适用于http://jsbin.com或http:// jsfiddle .net,但是也必须在代码中包含代码)。 – 2012-02-20 12:44:21

+0

我实际上是使用您在代码中使用的数组的文字表示。 var premiumtypecodes = [];由于这不起作用,我尝试了各种方法。顺便说一句,你的代码工作,并做我想要的。任何想法为什么我写的代码不起作用? – 2012-02-20 12:49:39

1

jQuery提供了这种事情辅助方法......

var premiumtypecodes = arr.map(function() { 
    return this.value; 
}).get(); 

map

0

您应该使用makeArray()一个jQuery方法Convert an array-like object into a true JavaScript array.

var obj = $(".producttypeid"); 

var arr = $.makeArray(obj); 

从文档

采取

jQuery和JavaScript中的许多方法通常返回 类似数组的对象。例如,jQuery工厂函数 $()会返回一个jQuery对象,该对象具有许多 数组(长度,[]数组访问运算符等)的属性,但不是 与数组完全相同并缺少一些数组内置的 方法(如.pop()和.reverse())。

请注意,转换后,对象具有的所有特殊功能 (例如本示例中的jQuery方法)将不再存在。 该对象现在是一个普通数组。

+1

'arr [i] .value'是原始代码:它添加了DOM元素而不是它们的值。 – lonesomeday 2012-02-20 12:12:16

+0

@lonesomeday我同意你的意思,但我明白他想创建一个DOM元素数组(这个问题并不清楚) – 2012-02-20 12:14:48

+0

我只需要捕获value属性并创建一个数组。这是示例文本。 2012-02-20 12:42:24

0

这里是我是如何做到的

VAR ARR = []; 。

$( “producttypeid”)每个(函数(指数,选择器){

arr.push($(选择器)的.text());

});