我正在从一组动态生成的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>
有什么迹象表明我做错了什么?
由于
答案 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
});