首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从数组中获取相关值,获取未捕获的长度“无法使用'in‘运算符搜索’TypeError‘”

无法从数组中获取相关值,获取未捕获的长度“无法使用'in‘运算符搜索’TypeError‘”
EN

Stack Overflow用户
提问于 2021-07-30 15:40:13
回答 1查看 19关注 0票数 0

我需要从数组中获取所选选项的相关值。

我的选择:

代码语言:javascript
复制
<select id="BestMobileSelect">
    <option></option>
    <option value=Mobile-SmartPhone-Motorola>Motorola</option>
    <option value=Mobile-SmartPhone-Samsung>Samsung</option>
    <option value=Mobile-SmartPhone-Xiaomi>Xiaomi</option>
</select>

数组:

代码语言:javascript
复制
var BestMobileJSON = {
    "Mobile-SmartPhone-Motorola" : [{"Price":"Rs.12000"}],
    "Mobile-SmartPhone-Samsung" : [{"Price":"Rs.15000"}],
    "Mobile-SmartPhone-Xiaomi" : [{"Price":"Rs.9000"}],
}

我用来获取相关值的jquery如下:

代码语言:javascript
复制
$("#BestMobileSelect").on("change", function () {
        var BestMobileSelected = $(this).val()

        var markup = '';
        jQuery.each(BestMobileSelected, function(index, value){
            markup += '<div>' + BestMobileJSON[value][0].Price +'</div>'
        });

    $("#BestMobileResult").html(markup);
    });

但是,这不起作用,我得到了错误Uncaught TypeError: Cannot use 'in' operator to search for 'length' in Mobile-SmartPhone-Motorola

为什么这不起作用?

在下面找到完整的代码:

代码语言:javascript
复制
jQuery(document).ready(function($) {
  var BestMobileJSON = {
    "Mobile-SmartPhone-Motorola": [{
      "Price": "Rs.12000"
    }],
    "Mobile-SmartPhone-Samsung": [{
      "Price": "Rs.15000"
    }],
    "Mobile-SmartPhone-Xiaomi": [{
      "Price": "Rs.9000"
    }],
  }

  $("#BestMobileSelect").on("change", function() {
    var BestMobileSelected = $(this).val()

    var markup = '';
    jQuery.each(BestMobileSelected, function(index, value) {
      markup += '<div>' + BestMobileJSON[value][0].Price + '</div>'
    });

    $("#BestMobileResult").html(markup);
  });

});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<select id="BestMobileSelect">
  <option></option>
  <option value=Mobile-SmartPhone-Motorola>Motorola</option>
  <option value=Mobile-SmartPhone-Samsung>Samsung</option>
  <option value=Mobile-SmartPhone-Xiaomi>Xiaomi</option>
</select>

<div id="BestMobileResult"></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-30 16:00:59

$.each()的参数必须是数组或对象,但BestMobileSelected是字符串。您应该使用DropDown值作为BestMobileJSON对象的索引;这将返回一个数组,然后您可以使用$.each()遍历该数组。

代码语言:javascript
复制
jQuery(document).ready(function($) {
  var BestMobileJSON = {
    "Mobile-SmartPhone-Motorola": [{
      "Price": "Rs.12000"
    }],
    "Mobile-SmartPhone-Samsung": [{
      "Price": "Rs.15000"
    }],
    "Mobile-SmartPhone-Xiaomi": [{
      "Price": "Rs.9000"
    }],
  }

  $("#BestMobileSelect").on("change", function() {
    var markup = '';
    let val = $(this).val();
    if (val) {
      var BestMobileSelected = BestMobileJSON[val];
      jQuery.each(BestMobileSelected, function(index, value) {
        markup += '<div>' + value.Price + '</div>'
      });
    }
    $("#BestMobileResult").html(markup);
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<select id="BestMobileSelect">
  <option></option>
  <option value=Mobile-SmartPhone-Motorola>Motorola</option>
  <option value=Mobile-SmartPhone-Samsung>Samsung</option>
  <option value=Mobile-SmartPhone-Xiaomi>Xiaomi</option>
</select>

<div id="BestMobileResult"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68593670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档