如何将json数据转换为HTML标签?

时间:2020-02-19 19:52:04

标签: javascript

我正在尝试在Html标签中显示JSON数据。但是我得到了错误:

未捕获(承诺)TypeError。

async function fetchData() {
        const response = await fetch('http://newsapi.org/v2/top-headlines?country=in&apiKey=520bf969179e416aa2c3608591647a76');
        const data = await response.json();
        console.log(data);
    
        document.getElementById("display").insertAdjacentText = `
        ${data.articles.map(function (article) {
            return `
            <ul id="news-articles">
            <li class="article"><img class="article-img" src="${article.urlToImage}" alt="article-img"></li>
            <li class="article"><h2 class="article-title">${article.title}</h2></li>
            <li class="article"><p class="article-description">${article.description}</p></li>
           <li class="article"><span class="article-author">${article.author}</span></li>
            <li class="article"><a class="article-link" href="">${article.url} target="_blank"> </a></li>
            </ul>
             `
        }).join('')}`
    
    }
    fetchData();
<div class="display"></div>

3 个答案:

答案 0 :(得分:0)

当前,您正在将HTML实体作为文本插入,这将无法正常工作。

尝试

    async function fetchData() {
        const response = await fetch('http://newsapi.org/v2/top-headlines?country=in&apiKey=520bf969179e416aa2c3608591647a76');
        const data = await response.json();
        console.log(data);

        document.getElementsByClassName("display")[0].innerHTML = data.articles.map(function (article) {
            return `
            <ul id="news-articles">
            <li class="article"><img class="article-img" src="${article.urlToImage}" alt="article-img"></li>
            <li class="article"><h2 class="article-title">${article.title}</h2></li>
            <li class="article"><p class="article-description">${article.description}</p></li>
           <li class="article"><span class="article-author">${article.author}</span></li>
            <li class="article"><a class="article-link" href="">${article.url} target="_blank"> </a></li>
            </ul>`;
        }).join('');

    }
    fetchData();

答案 1 :(得分:0)

问题是您的div元素属于类display,而不是id display,因此document.getElementById("display")返回null。将class="display"更改为id="display"

此外,为此使用document.getElementById("display").innerHTML

答案 2 :(得分:0)

您引用了id="display",但已将其设置为class="display"

async function fetchData() {
  const response = await fetch('http://newsapi.org/v2/top-headlines?country=in&apiKey=520bf969179e416aa2c3608591647a76');
  const data = await response.json();

  document.getElementById("display").innerHTML = data["articles"].map(
    article => `<ul id="news-articles">
            <li class="article"><img class="article-img" src="${article.urlToImage}" alt="article-img"></li>
            <li class="article"><h2 class="article-title">${article.title}</h2></li>
            <li class="article"><p class="article-description">${article.description}</p></li>
           <li class="article"><span class="article-author">${article.author}</span></li>
            <li class="article"><a class="article-link" href="">${article.url} target="_blank"> </a></li></ul>`).join('');
}

fetchData();
<div id="display"></div>