【问题标题】:Using Value from Option to get data from JSON使用 Value from Option 从 JSON 中获取数据
【发布时间】:2019-09-16 11:56:16
【问题描述】:

朋友们!我有一个 json 文件、一个 .js 文件和一些 html。

我可以从js文件中的json文件中读取数据就好了,它正在输出到控制台。

所以我有一个包含所有 50 个州的下拉菜单,其中的值是州的缩写。每个状态有 6 个不同的值,如下所示:

"AK": {
  "I": 0,
  "II": 0,
  "III": 0,
  "IV": 0,
  "V": 0,
  "VI": 0
 }

我可以像这样控制数据:data.AK.II,这很好。

我在实现这一点时遇到了问题:数据。(所选选项的值)。II

   $('select#input_56_3').on('change', function () {
var thisValue = $('select#input_56_3 option:selected').val();
var newValue = data.thisValue.I;
console.log('newValue = ' + newValue);
  });

这是我遇到的错误,所以“thisValue”遇到未定义。

未捕获的类型错误:无法读取未定义的属性“I”

我应该以某种方式转换它吗?我想我已经盯着这个太久了。

【问题讨论】:

    标签: javascript jquery json object


    【解决方案1】:

    data.thisValue.II改成data[thisValue].II,就可以了。

    • 括号表示法主要用于键名中有空格的情况,例如"full name"
    • 如果您直接尝试访问对象中的值,则使用 Do 表示法。如果d = {k: 1} 那么d.kd[k] 都可以。 d = {"k v": 1} 那么只有 d["k v"] 可以工作。
    > data = {
    ...     "AK": {
    .....         "I": 0,
    .....         "II": 0,
    .....         "III": 0,
    .....         "IV": 0,
    .....         "V": 0,
    .....         "VI": 0
    .....     }
    ... }
    { AK: { I: 0, II: 0, III: 0, IV: 0, V: 0, VI: 0 } }
    > 
    > thisValue = "AK"
    'AK'
    > 
    > data[thisValue].I
    0
    > data[thisValue].II
    0
    > 
    

    下面会抛出异常(错误)。

    > data.thisValue.II
    Thrown:
    TypeError: Cannot read property 'II' of undefined
    > 
    

    【讨论】:

    • 好的,所以现在我尝试使用不同的选择选项来获取最后一个属性(I、II、III、IV、V 或 VI),但现在我得到一个未定义的如果我像这样传递它: data[thisValue].loanValue;它在控制台中记录得很好。 @hygull
    【解决方案2】:

    使用方括号表示法:

    var newValue = data[thisValue].I;
    

    【讨论】:

    • 还有点符号:data[thisValue].I
    • 哎呀,我的坏@Steve。
    猜你喜欢
    • 2016-05-02
    • 2016-10-26
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多