使用javascript

时间:2017-10-01 07:12:08

标签: javascript json

嗨,大家需要一些帮助,因为我是javascript的开头请注意,我的问题可能是一个副本给你们所有,但我需要一点启示这里,无论如何我需要显示我需要的数据JSON数组让我说我有3个数组

var = countrysites[ "Denmark"],["United States"],["France"]

如果我使用基本的javascript Onclick单击丹麦的标记,它将显示丹麦的数据,而不是调用美国和法国的所有数据。这是我的javascript代码

function displayData(){
for (var i = 0; i < countrysites.length; i++) {
    if (countrysites[i].country_name === id) {
      countrysites[i].country_name = country_name;

    }
  }
}    

我的div的id为'sitemark',并且显示了displayData

提前谢谢

2 个答案:

答案 0 :(得分:-1)

如果您要通过多维数组,那么您必须使用两个for循环

for(var i = 0; i < arr.length; i++) {
for(var j = 0; j < arr[i].length; j++) {
    if(whatever you're looking for) {

    }
}

}

答案 1 :(得分:-1)

我已经采取了一些自由来回答这个问题,因为我仍然不确定你的数据结构是什么样的,但希望这会有所帮助。

以下是您作为JSON接收的数据,然后您将其解析。它的对象数组,每个对象包含country_nameinfo属性。

const countryInfo = [
  { country_name: 'Denmark', info: 'This is Denmark' },
  { country_name: 'England', info: 'This is England' },
  { country_name: 'Japan', info: 'This is Japan' }
];

出于 DEMO 的目的,我们抓取body元素,然后从数据中获取只是国家/地区名称的数组

const body = document.querySelector('body');
const names = countryInfo.map(obj => obj.country_name);

我们使用该数组数据构建一些标记,并将它们添加到body元素。请注意数据属性data-name。我们在此处存储国家/地区名称的副本。

names.forEach(name => {
  const html = `<div class="sitemark" data-name="${name}">${name}</div>`;
  body.insertAdjacentHTML('beforeend', html);
});

我们抓住info元素。这是我们添加国家/地区信息的地方。

const info = document.querySelector('#info');

我们抓住标记并向它们添加事件监听器。单击一个时,请调用displayData函数。

const sitemarks = document.querySelectorAll('.sitemark');
sitemarks.forEach(marker => {
  marker.addEventListener('click', displayData, false);
});

要获取countryinfo,我们会在find数组上执行countryInfo操作,该数组会拉出第一个对象实例,其中国家/地区名称与data-name属性中的名称相同元素,然后从该对象获取info值。然后我们将该文本添加到info元素。

function displayData() {
  const text = countryInfo.find(obj => obj.country_name === this.dataset.name).info;
  info.innerHTML = text;
}