2017-12-27 473 views
0

我不知道正确的术语这里,所以让我告诉我的代码:将JSON数据添加到html选项选择器后,如何在选择时引用其他数据?

var json = "https://example.com/"; 

$.getJSON(json,function(data) { 
    for (var x = 0; x < data.length; x++) { 

     $('#select').append(
      '<option value="' + data[x].name + '">' + data[x].name + '</option>' 
     ); 
    } 
}); 

JSON数据如下所示,但更多的数据:

[ 
{ 
    "id": "test1", 
    "name": "test1", 
    "symbol": "t1", 
    "rank": "1", 
    "price_usd": "55" 
}, 
{ 
    "id": "test2", 
    "name": "test2", 
    "symbol": "t2", 
    "rank": "2", 
    "price_usd": "155" 
} 
] 

本质上讲,当有人使用选择选项并选择“test1”我想显示其他信息,例如;身份证,符号,排名等等。动态地去做这件事,而不是写一堆if语句的最好方法是什么?

+0

您有一个XSS漏洞。 – SLaks

+0

@SLaks这不适用于任何官方,只是为了我自己的用途来追踪一些数据。 – user3330820

回答

1

要获得对象中的所有数据你使用填充选项(data[x].name)其中,
您可以过滤对象的数组或改变结构,因此您可以通过名称引用它,

这里是一些例子。

过滤阵列:

var dataXName = 'whatever name' 
var obj = data.filter(function(x){ return x.name === dataXName })[0] 

映射的对象:上述

var byName = data.reduce(function(ac, x){ 
    return Object.assign(ac, {[x.name]:x}) 
},{}) 
// then you can reference the object with byName['whatever name'] 

的解决方案是简单的js和不依赖于jquery的。

+0

谢谢。过滤数组完美运作。 – user3330820

1

将得到的JSON字符串放入使用[JSON.parse]1的对象中。然后,您可以使用.toggle()或其他一些jQuery有趣的功能,并定位对象中的适用项目和值。

相关问题