【问题标题】:$.getJson function not appending to div$.getJson 函数未附加到 div
【发布时间】:2017-08-22 01:20:02
【问题描述】:

所以我试图从提供给我的 JSON 文件中获取 .json 数据,遍历它,每次创建一个 div 并将该数据附加到它。

到目前为止我有这个功能:

    $.getJSON( "https://api.myjson.com/bins/14uau1", function(data) {
    var dealers = data.dealers.map(dealer => {
    let currentDealer = dealer.data;
    let newDiv = document.createElement("div");
    newDiv.setAttribute("id", currentDealer.customerID);
    return newDiv.innerHTML= currentDealer;
   })

   dealers.map(i => {
     let holder = document.getElementById("dealer");
     holder.appendChild(i);
      console.log(i);
  })

但是,每当我尝试运行它时,它都会给我这个错误

index:212 Uncaught TypeError: Failed to execute 'appendChild' on   'Node': parameter 1 is not of type 'Node

我意识到这意味着它正在获取一个不被视为 HTML 元素的对象,因此它不能通过 .innerHTML 附加到 div 中。

那么最好的方法是什么?

【问题讨论】:

    标签: jquery html json getjson


    【解决方案1】:

    首先,您的代码中有几个语法错误。

    您需要处理缺少的})

    return newDiv.innerHTML = currentDealer
    此行返回一个分配,而不是您可能想要的 newDiv。相反,您应该在返回元素 (return newDiv) 之前先分配 innerHTML (newDiv.innerHTML = <value>)。这是您收到uncaught TypeError 错误的地方。

    您还将 Javascript 对象 (currentDealer) 分配给 innerHTML 而不是字符串。如果要输出此对象的 JSON 字符串,请使用JSON.stringify。否则,请确保您正在分配所需的实际字段,例如currentDealer.data.companyID

    还要注意,在这一行 newDiv.setAttribute("id", currentDealer.customerID); 上,您正在尝试分配 currentDealer.customerID,这是一个未定义的值。

    总结一下

    1. 首先,检查语法错误
    2. 然后,检查您分配的值是否存在(console.logconsole.dir 是您的朋友)并匹配您尝试分配给的 data type

    这是一个工作演示:
    https://codepen.io/hydrospell/pen/KvRgvB

    【讨论】:

    • 这是一个超级有用的救命稻草!太感谢了!这里已经很晚了,但我会在早上学习更多。
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2017-03-24
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多