jquery数组不循环遍历所有元素

时间:2013-04-26 13:52:44

标签: jquery

我正在从一组动态生成的textareas中创建一个文本值数组。

我在循环中放置了一个警告声明,看它是否正常工作,它只是提醒它遇到的第一个textarea,但没有其他的。

这是我的jQuery:

var textArray = [];

$('[name=txtObjective]').each(function (i) {
     alert($(this).val());
     textArray.push(i.val());
});

这就是我的textareas的样子:

 <textarea name='txtObjective' class='objectives'>this is some text</textarea>
 <textarea name='txtObjective' class='objectives'>this is some more text</textarea>
 <textarea name='txtObjective' class='objectives'>this is even some more text</textarea>

有什么迹象表明我做错了什么?

由于

4 个答案:

答案 0 :(得分:3)

因为在执行textArray.push(i.val());时遇到错误。.each中的第一个arg是索引,这是一个数字,并且应用.val会抛出错误并突破循环。

使用第二个作为元素的arg或使用this

textArray.push(i.val());更改为textArray.push($(this).val());

答案 1 :(得分:2)

将您的循环更改为:

$('[name=txtObjective]').each(function (i) {
     textArray.push($(this).val());
});

在你的代码中,i是一个索引(0,1,2),尝试推入你的数组是没有意义的。 .each()有两个参数,一个索引和一个值,你试图使用索引的值,当然这个值不起作用。通过使用$(this).val(),您可以将textarea的值推送到数组中。

答案 2 :(得分:1)

尝试像这样定义你的textareas:

<textarea name='txtObjective[]' class='objectives'>

并使用:

$('textarea.objectives').each(function(i){
    //your code
})

答案 3 :(得分:1)

你应该在控制台上遇到错误 - Object 0 has no method 'val'

$('[name=txtObjective]').each(function (i) {
     alert($(this).val());
     textArray.push($(this).val()); // <<-- use $(this) here instead of i
});

http://jsfiddle.net/mohammadAdil/j8JgX/