getElementById 在 JavaScript 页面构建中返回 null

getElementById returns null in JavaScript page building

提问人:Peter Horvath 提问时间:11/16/2023 最后编辑:Heretic MonkeyPeter Horvath 更新时间:11/16/2023 访问量:24

问:

我在 JavaScript 中创建了这个结构。我不使用 HTML。 我有一个创建结构并返回根窗格的函数。

function createEmptyChartPane (chartId) { 
  let divelem = document.createElement('div');
  let elem = document.createElement('textarea');

  elem.id = "chartdescr" + chartId;
  elem.rows = 6;
  elem.cols = 80;
  divelem.append(elem);

  // ...some other code, other elements

  return divelem
}

此函数是从另一个函数调用的。它遍历元素并创建它们。调用上一个函数后,它会尝试设置元素的值。但它失败了,因为 getElementById 返回 null。

function createChartPanels () {

  let pane = document.createElement("div");

  // ... some other code
  for (let i; i < charts.length; i++) {
    pane.append(createEmptyChartPane(charts[i].id));

    let elem = document.getElementById("chartdescr" + charts[i].id);  // this returns null
    elem.value = charts[i].description;

    // ... setting value to other elements
  }
  return pane
}

除了值设置外,这些函数还可以正常工作,并创建图形元素。

我该怎么做才能避免空值?

javascript null getelementbyid

评论

2赞 Chris Barr 11/16/2023
getElementById将在文档中找到具有您指定的 ID 的元素。如果您从不将其放入文档 HTML 中,则永远不会找到它。

答:

0赞 Barmar 11/16/2023 #1

问题是您从未附加到文档中,因此找不到它。panedocument.getElementById()

但是没有必要首先调用,因为返回元素。你可以把它赋值给变量。document.getElementById()createEmptyChartPane()elem

function createChartPanels () {

  let pane = document.createElement("div");

  // ... some other code
  for (let i; i < charts.length; i++) {
    let elem = createEmptyChartPane(charts[i].id)
    pane.append(elem);
    elem.value = charts[i].description;

    // ... setting value to other elements
  }
  return pane
}