获取具有相同类的多个输入字段的值并添加到javascript对象中

获取具有相同类的多个输入字段的值并添加到javascript对象中,javascript,jquery,html,Javascript,Jquery,Html,我面临的问题如下: <input title="1" type="text" class="email"> <input title="2" type="text" class="email"> <input title="3" type="text" class="email"> 当前,console.log仅显示添加到对象的最后一个值,如下所示 Object { 3="a@a.com"} 我的预期结果应如下所示 Object { 1="a@a.com"

我面临的问题如下:

<input title="1" type="text" class="email">
<input title="2" type="text" class="email">
<input title="3" type="text" class="email">
当前,console.log仅显示添加到对象的最后一个值,如下所示

Object { 3="a@a.com"}
我的预期结果应如下所示

Object { 1="a@a.com", 2="b@b.com", 3="c@c.com"}
有人能帮我解释一下这个问题吗

谢谢你的阅读,
问候。

您的
任务数组实际上是一个数组,而不是一个数组

用此替换
var taskArray={}
应该可以解决问题:

var taskArray = new Array();
编辑:再想想,你已经拥有的是完全有效的

我正在编辑我的答案,以回应我在评论中所说的:您需要使用控制台进行调试:

.each()
中,放置:
console.log(id)-预期结果将是“1”、“2”、“3”-如果只是“3”,则可能意味着您的其他输入由于任何原因未被拾取。如果结果是这样,请在指定值后打印出对象:
console.log(emailObj[id])

您的代码没有问题。我建议你把它写成实用方法

function getValues(selector){
  var tempValues = {};
  $(selector).each(function(){
     var th= $(this);
     tempValues[th.attr('title')] = th.val();
   });
  return tempValues;
}

var values = getValues('.email');
或者如果要将值放入数组中

$('.email').map( function(){return $(this).val(); }).get();
.get()
将其转换为常规数组


你写的代码是绝对正确的。但当我加载它时,它会返回null,因为在执行时,文本框中没有值。

无法复制:。不知道它是否适合您的情况,但为什么不使用
.serializeArray()并将标题作为名称。您只需要注意服务器端部分,因为它将是一个数组
{name:,value::}
@FelixKling他编写了正确的代码,可能是因为他假设代码不工作,因为在代码执行时文本框值为空。什么问题?代码在我看来非常好。使用一个对象,并将其称为
taskArray
,这很奇怪,但这不是一个错误。是的,我自己刚刚学会了这一点!啊!编辑名称,抱歉=/使用控制台打印每个元素的id值。在
.each()
中,放置:
console.log(id)-预期结果将是“1”、“2”、“3”-如果只是“3”,则可能意味着您的其他输入由于任何原因未被拾取。如果结果是这样,请在指定值后打印出对象:
console.log(emailObj[id])@JamesDonnelly我确实在控制台中看到了预期的结果。但是,如果在each()之后打印整个对象,结果仍然是原始版本。
$('.email').map( function(){return $(this).val(); }).get();