【问题标题】:Javascript Json parse data into htmlJavascript Json 将数据解析为 html
【发布时间】:2021-10-29 13:25:41
【问题描述】:

我正在尝试将 json 解析为 html,但是我不确定我做错了什么。 你们能帮我解决这个问题吗?

它最终会放在桌子上。

很高兴在这里了解我做错了什么。

我知道有很多关于 json 解析的帖子,但是我找不到显示这种类型 json 的方法?

看起来像 [![在此处输入图片描述][1]][1]

function readTextFile(file, callback) {
  var rawFile = new XMLHttpRequest();
  rawFile.overrideMimeType("application/json");
  rawFile.open("GET", file, true);
  rawFile.onreadystatechange = function() {
    if (rawFile.readyState === 4 && rawFile.status == "200") {
      callback(rawFile.responseText);
    }
  }
  rawFile.send(null);
}

//usage:
readTextFile("https://assets.cmcmarkets.com/json/cmc-test-most-popular-feed.json", function(text) {
  var data = JSON.parse(text);
  //console.log(data);



  var obj = JSON.parse(text, function(key, value) {


    const name = value == "name",
      code = document.querySelector('.code'),
      spread = document.querySelector('.spread');
    cellA = document.querySelector('.cellA');
    cellA.innerHTML = key;

    // name.innerHTML = `<div>movement: ${data[key]["name"]}</div>`;
    // code.innerHTML = `<div>movement: ${data[key]["code"]}</div>`;
    // spread.innerHTML = `<div>movement: ${data[key]["spread"]}</div>`;
    // cellA.innerHTML = `<div>movement: ${data[key]["1day"]}</div>`;

    if (value == "name") {
      document.querySelector('.name').innerHTML = `<div>Name: ${data[key]["name"]}</div>`;
    }

    if (value == "1day") {
      cellA.innerHTML = `<div>movement: ${data[key]["movement"]}</div><div>price: ${data[key]["price"]}</div>`;
    }
    console.log(key);
  });
});
<div class="name"></div>
<div class="code"></div>
<div class="spread"></div>
<div class="cellA"></div>

【问题讨论】:

  • 你的目标是什么?
  • document.querySelector('.name') 选择第一个具有“名称”类的元素,但您的 div 只有 id。我想你想要document.querySelector('#name')
  • Uncaught TypeError: Cannot set properties of null (setting 'innerHTML') 你的选择器错误,应该是'#cellA',而不是'.cellA'
  • @JeremyThille 谢谢,对不起,我忘了更新那里的 html。是的,即使进行了更改,也没有将正确的数据拉入 html
  • @user1599011 谢谢,愚蠢的我忘了把 id 改成 class。还是不行

标签: javascript html json


【解决方案1】:

应该是if(key == "1day"),而不是if(value == "1day")。 但随后你立即得到另一个错误,因为 data['1day'] 未定义(它应该是 data["X-ABFDN"]['1day']data["X-ABAAA"]['1day']data["X-AQWER"]['1day']

function readTextFile(file, callback) {
  var rawFile = new XMLHttpRequest();
  rawFile.overrideMimeType("application/json");
  rawFile.open("GET", file, true);
  rawFile.onreadystatechange = function() {
    if (rawFile.readyState === 4 && rawFile.status == "200") {
      callback(rawFile.responseText);
    }
  }
  rawFile.send(null);
}

//usage:
readTextFile("https://assets.cmcmarkets.com/json/cmc-test-most-popular-feed.json", function(text) {
  var data = JSON.parse(text);
  // console.log(data);

  var obj = JSON.parse(text, function(key, value) {
    const name = value == "name",
      code = document.querySelector('.code'),
      spread = document.querySelector('.spread');
    cellA = document.querySelector('.cellA');
    cellA.innerHTML = key;

    // name.innerHTML = `<div>movement: ${data[key]["name"]}</div>`;
    // code.innerHTML = `<div>movement: ${data[key]["code"]}</div>`;
    // spread.innerHTML = `<div>movement: ${data[key]["spread"]}</div>`;
    // cellA.innerHTML = `<div>movement: ${data[key]["1day"]}</div>`;

    console.log(`key='${key}', value='${value}'`);

    if (key == "name") {
      document.querySelector('.name').innerHTML = `<div>Name: ${data[key]["name"]}</div>`;
    }

    if (key == "1day") {
      const html = `<div>movement: ${data[key]["movement"]}</div><div>price: ${data[key]["price"]}</div>`;
      console.log("html=" + html);
      cellA.innerHTML = html;
    }
    console.log(key);
  });
});
.cellA {
  border: red dashed 1px;
}
<div class="name"></div>
<div class="code"></div>
<div class="spread"></div>
<div class="cellA"></div>

【讨论】:

  • 谢谢,但仍然有一些错误
  • 看起来名字总是出现在 cellA 上?也应该显示它的价值!
  • 嗯,是的,你写了cellA.innerHTML = key。所以是“名”。然后脚本崩溃,因为 data['name'] 未定义,所以没有任何变化。那是另一个问题,如果你也不能解决,请另开一个问题。
猜你喜欢
  • 2014-05-19
  • 2021-09-18
  • 2021-12-26
  • 2010-12-31
  • 2011-07-02
  • 2020-12-17
  • 2020-06-14
  • 2013-08-18
相关资源
最近更新 更多