提问人:Peter Horvath 提问时间:11/16/2023 最后编辑:Heretic MonkeyPeter Horvath 更新时间:11/16/2023 访问量:24
getElementById 在 JavaScript 页面构建中返回 null
getElementById returns null in JavaScript page building
问:
我在 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
}
除了值设置外,这些函数还可以正常工作,并创建图形元素。
我该怎么做才能避免空值?
答:
0赞
Barmar
11/16/2023
#1
问题是您从未附加到文档中,因此找不到它。pane
document.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
}
评论
getElementById
将在文档中找到具有您指定的 ID 的元素。如果您从不将其放入文档 HTML 中,则永远不会找到它。