var arr = $(".producttypeid");
var premiumtypecodes = Array(arr.length);
for (var i = 0; i < arr.length; i++)
premiumtypecodes[i] = arr[i].value;
以上代码似乎不起作用。目的是将输出分配给数组。我遗失的任何东西。 为什么这个简单的代码不起作用?推理会受到高度赞赏....
根据反馈,我正在添加样本标记并添加详细信息,以使我的意图毫不含糊。
<input class="producttypeid" type="hidden" value="512">
我想使用样式producttypeid从所有标签中提取值并创建一个数组
答案 0 :(得分:3)
我是这样做的:
var arr = $(".producttypeid");
var premiumtypecodes = [];
arr.each(function(index) {
premiumtypecodes[index] = this.value;
});
假设所有匹配元素都是input
个元素(因为使用了value
)。如果其中一些元素可能是textarea
或select
元素,则将迭代器函数内的行更改为:
premiumtypecodes[index] = $(this).val();
如果它们根本不是表单字段,则必须通过其“值”来定义您的意思(例如,您可以使用$(this).text()
来获取其文本内容,或$(this).html()
获得他们的标记,或其他完全的东西)。
我没有立即发现您的版本存在任何问题,除了i
之后您错过了var
:
for (var = 0; i < arr.length; i++)
// ^--- here
除此之外,它应该有效,但请注意,尽管Array(arr.length)
有效,但通常的编写方式是new Array(arr.length)
(并且不需要预先设置长度; JavaScript数组{ {3}}所以你没有得到这样做的通常好处。)
答案 1 :(得分:1)
jQuery为这种事情提供了帮助方法......
var premiumtypecodes = arr.map(function() {
return this.value;
}).get();
请参阅map
答案 2 :(得分:0)
您应该使用makeArray() Convert an array-like object into a true JavaScript array.
var obj = $(".producttypeid");
var arr = $.makeArray(obj);
取自文档
jQuery和JavaScript中的许多方法都会返回 类似于数组的对象。例如,jQuery工厂函数 $()返回一个具有许多属性的jQuery对象 数组(长度,[]数组访问运算符等),但不是 与数组完全相同,缺少一些数组的内置功能 方法(例如.pop()和.reverse())。
请注意,转换后,该对象具有任何特殊功能 (例如我们示例中的jQuery方法)将不再存在。 该对象现在是一个普通数组。
答案 3 :(得分:0)
以下是我的表现
var arr = [];
$(&#34; .producttypeid&#34)。每一(功能(索引,选择器){
arr.push($(selector).text());
});