获取具有相同类的多个输入字段的值并添加到javascript对象中
Getting value of multiple input fields with same class and adding into javascript object
我面临以下问题:
<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]);
后打印出对象。
相关文章:
- FabricJs-限制主对象内添加对象的移动区域
- 向Angular作用域对象添加对象数组——TypeError
- Javascript使用+添加对象
- 动态添加对象的jQuery事件处理程序
- 添加JQuery UI在Meteor中添加对象后可调整大小
- 在我的上下文中添加对象的动态方法
- 如何检测是否已使用 angular.forEach AngularJS 添加对象
- 在对象coffeescript中添加对象数组
- 使用Jquery在单击“”时显示表单;添加对象”;按钮
- 我可以向数组添加对象键吗
- 向扩展数组的JS集合添加对象(继承?)
- 尝试通过从自动完成推送添加对象时缺少 $$Hashkey
- 添加对象值 Javascript
- 在上传问题时添加对象
- 如何使用 javascript 的变量名称在数组中添加对象属性
- 在 JavaScript/TypeScript 中动态地“直接”添加对象属性到“this”
- 如何仅当对象不存在时才使用javascript添加对象
- 如何在数组末尾添加对象的副本
- rails在javascript url中添加对象
- ThreeJS-按不同顺序添加对象会影响alpha/显示