【问题标题】:Javascript or Jquery add to generic object with a foreachJavascript 或 Jquery 使用 foreach 添加到通用对象
【发布时间】:2018-12-29 07:43:39
【问题描述】:

我正在尝试重新创建:

formData = {
  'Username': $('input[name=Username]').val(),
  'FirstName': $('input[name=FirstName]').val(),
  'LastName': $('input[name=LastName]').val(),
  'Email': $('input[name=Email').val(),
  'DisplayName': $('input[name=DisplayName').val()
}

form 输入上使用foreach

formData = {
  function() {
    $('#Edit-@Dnn.ModuleContext.ModuleId input, #Edit-@Dnn.ModuleContext.ModuleId select').each(
      function(index) {
        var input = $(this);
        n = input.attr('name');
        v = input.val();
        return { n: v }
      }
    );
  }
}

当然,这是行不通的。它只是描述了我正在尝试做的事情。 nv 值是正确的。我可以通过alert 获得正确的输出。它只是在创建我遇到问题的formData

我该怎么做?

【问题讨论】:

    标签: javascript jquery object foreach


    【解决方案1】:

    你不需要jQuery来解决它:

    var formData = {};
    var inputs = document.querySelectorAll('#Edit-@Dnn.ModuleContext.ModuleId input, #Edit-@Dnn.ModuleContext.ModuleId select');
    for (var i = 0; i < inputs.length; ++i) {
      formData[inputs[i].name] = inputs[i].value;
    }
    

    或者如果你不需要支持IE:

    var formData = {};
    for (var input of document.querySelectorAll('#Edit-@Dnn.ModuleContext.ModuleId input, #Edit-@Dnn.ModuleContext.ModuleId select')) {
      formData[input.name] = input.value;
    }
    

    【讨论】:

    • 是的!比我的回答更干净、更高效。
    【解决方案2】:

    比我想象的要简单:

    formData = {};
    $('#Edit-@Dnn.ModuleContext.ModuleId input, #Edit-@Dnn.ModuleContext.ModuleId select').each(
      function(index) {
        var input = $(this);
        formData[input.attr('name')] = input.val();
      }
    );
    

    【讨论】:

    • 由于您没有询问 jquery 也没有用 jquery 标记您的问题,这实际上不是您问题的答案
    猜你喜欢
    • 2017-02-08
    • 2012-04-15
    • 2020-05-03
    • 2016-04-20
    • 2016-11-10
    • 2010-12-17
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多