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

Getting value of multiple input fields with same class and adding into javascript object

本文关键字:添加 对象 javascript 字段 输入 同类 获取      更新时间:2023-09-26

我面临以下问题:

<input title="1" type="text" class="email">
<input title="2" type="text" class="email">
<input title="3" type="text" class="email">

上面是我的html,我试图获取每个输入框的电子邮件,并将其存储在一个以标题为键的对象中。

以下是我的JavaScript目前的

var emailObj = {};
$("input[class=email]").each(function() {
    var id = $(this).attr("title");
    var email = $(this).val()
    emailObj[id] = email;
});

当前console.log只显示添加到对象的最后一个值,如下所示。

Object { 3="a@a.com"}

我的预期结果应该如下所示

Object { 1="a@a.com", 2="b@b.com", 3="c@c.com"}

有人能为我解释一下这个问题吗?

感谢您的阅读,当做

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

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,因为在执行时,文本框中没有值。

您的taskArray实际上是一个对象,而不是数组。

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

var taskArray = new Array();

编辑:仔细想想,你已经拥有的是完全有效的!

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

.each()中,输入:console.log(id);-预期结果为"1"、"2"、"3"-如果只是"3",则可能意味着您的其他输入由于任何原因都没有被接收。如果结果是这样,请在指定值console.log(emailObj[id]);后打印出对象。