javascript - 每个中的 jQuery 变量范围

标签 javascript jquery foreach scope each

我正在尝试构建一个包含每个表单元素的所有值的数组。警报只是找到了,但在 console.log 上数据是空的,我是不是不明白 javascript 中的作用域是如何工作的?

  var data = new Array();
  $("#page2 input").each(function(index) {
      alert($(this).attr('id'));
      data[$(this).attr('id')] = $(this).val();
  });

非常感谢您的宝贵时间,

最佳答案

需要知道的一件事是 JavaScript 中的 Array 只能有正整数索引(实际上被视为字符串)。

当您将字符串分配给键时,您是在将属性分配给对象

你可能想要这样的东西......

var data = {};
$("#page2 input").each(function() {
   data[this.id] = this.value;
});

jsFiddle .

如果您只需要 id 属性。

var data = $("#page2 input").map(function() { 
               return this.id;
           }).get();

jsFiddle .

关于javascript - 每个中的 jQuery 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6025037/

相关文章:

javascript - 修改特定文本的值

javascript - 为什么单击一个元素触发事件会阻止另一个元素工作?

javascript - 如何设置共享同一类的元素的样式

jquery - 检查元素的可见性

javascript - 如何在 JavaScript 中定位迭代对象的子元素?

javascript - 多个 JSON 解析 + 从 Twitch API 解析前 10 个游戏

JavaScript:我自己的解析器的动态正则表达式

javascript - IE 10拖放上传给出空dataTransfer

javascript - Discord.js 列出我所有的机器人命令

javascript - forEach 完成后运行回调函数