从没有键的嵌套数组中获取数据,只是填充多个选择的值

时间:2018-01-29 21:05:19

标签: javascript arrays json populate

我有一个JSON文件,我创建了一个第一个变量,它将国家排除在外。这些国家/地区内有城市,这是该数据的变量:

var sucursalPais = [
    "colombia": [
        "bogotá",
        "cali"
    ],
    "peru" : [
        "lima",
        "cusco"
    ]
]

现在,我正在填充两个选择标签;一个国家名称,使用此:

for (var k in sucursalPais) {
    pais.innerHTML += '<option value ="' + k + '">' + k +'</option>';
}

因此,当选择一个国家时,下一个选择将由该国家城市填充;但我不知道如何将城市称为下一个选择,因为我没有城市[]子阵列,所有这些都在其上,我直接将城市划分到每个国家。

我已经尝试了所有,但我还没有找到解决方案。

这是我的所有代码:

var pais = document.getElementById("pais");
var sucursalPais = [];

for (z = 0; z < sucursalData.length; z++) {
    if(sucursalData[z].content.country && sucursalData[z].content.city) {
        if(sucursalPais[sucursalData[z].content.country] != undefined) {
            sucursalPais[sucursalData[z].content.country].push(sucursalData[z].content.city);
        } else {
            sucursalPais[sucursalData[z].content.country] = [sucursalData[z].content.city];
        }
    }
}
for (var k in sucursalPais){
    pais.innerHTML += '<option value ="' + k + '">' + k +'</option>';
}
pais.addEventListener("change", function () {
    for (m = 0; m < pais[this.value].length; m++) {
        console.log(sucursalPais[m]);
        ciudad.innerHTML += '<option value ="' + sucursalPais[m][value] + '">' + sucursalPais[m][value] +'</option>';
    }
});

1 个答案:

答案 0 :(得分:0)

我不知道 pais 是什么,但你明白了这一点:

sucursalPais = {
    "colombia": [
        "bogotá",
        "cali"
    ],
    "peru" : [
        "lima",
        "cusco"
    ]
}

var pais = "";
var pius = "";

for (var k in sucursalPais) {
  pais += '<option value ="' + k + '">' + k +'</option>';

  for (var z=0; z < sucursalPais[k].length; z++) {
    var city = sucursalPais[k][z];
    pius += '<option value ="' + city + '">' + city +'</option>';
  }
}

console.log(pais); // Countries
console.log(pius); // Cities

...您可以使用 innerHTML 创建 pius ,就像在您的示例中一样,我使用字符串来简化演示。