使用fetch()调用的响应编辑DOM

时间:2018-06-17 15:48:49

标签: javascript asynchronous fetch

我只是尝试使用从fetch()请求返回的数据来编辑DOM。我仍然是异步编程的新手,我相信我在这里做错了。

下面是代码:

window.onload = () => {
  const apiURL = 'https://www.APIurl.......';
  fetch(apiURL).then( (response) => {
    return response.json();
  }).then( (object) => {
    let {values} = object;

    document.getElementById('date1').innerHTML = values[0][0];
    console.log('This will run');
    document.getElementById('date2').innerHTML = values[13][0];
    console.log('This will not run');
    document.getElementById('date3').innerHTML = values[31][0];

  });
}

我的问题是我打电话,把数据恢复得很好,但是当我试图操纵DOM时,只有第一次编辑才有效。我不确定document.getElementById是否导致回调提前返回,但是我需要使用我回来的数据编辑DOM上的多个元素。

如果有更好的方法可以做到这一点,或者如果有人有修复,那就太棒了!

谢谢!

1 个答案:

答案 0 :(得分:0)

您收到错误out.close();,这意味着您正在选择元素,此元素不存在于DOM中(返回"TypeError: Cannot set property 'innerHTML' of null")并且您&# 39;重新尝试设置null的{​​{1}}属性。

要解决此问题,您必须在标记中添加innerHTMLnull元素,以便设置date2

此外,为了记录您的Promises中的错误,请按How does Swift translate -[NSView print] to printView()?

中的说明添加date3阻止