【问题标题】:Object from select list options values来自选择列表选项值的对象
【发布时间】:2019-01-31 20:03:12
【问题描述】:

想要创建一个包含所有选择列表选项值及其内部文本的对象。问题是,当控制台日志看起来像是在获取不同的对象时,而不是创建一个包含所有选项值的对象。

[这是我的代码][1]

let values = {};
$('select option').each(function() {
    var optionValue = $(this).attr('value');
    var optionText = $(this).text();
    console.log(optionValue, optionText);
		Object.assign(values, {optionValue: optionText});
    console.log(values);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
    <option value="one">Value one</option>
    <option value="two">Value two</option>
    <option value="three">Value three</option>
</select>

我哪里错了?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您的代码正在创建一个以optionValue 为键的对象,并且每次都会被覆盖。如果您的意图是创建一个值为optionValue 作为键的对象,则使用computed property names。您需要用[] 包装optionValue 以使用变量作为键:

    let values = {};
    
    $('select option').each(function() {
      var optionValue = $(this).attr('value');
      var optionText = $(this).text();
    
      Object.assign(values, {
        [optionValue]: optionText
      });
    
    });
    
    console.log(values);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <select>
      <option value="one">Value one</option>
      <option value="two">Value two</option>
      <option value="three">Value three</option>
    </select>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2019-01-30
      相关资源
      最近更新 更多