【发布时间】:2020-06-25 17:07:54
【问题描述】:
我知道这个问题在这里被问了很多,但是所有的答案都只适用于 jQuery,我需要一个没有它的解决方案。
所以在我做某事之后,我的 Servlet 将我带到一个 JSP 页面。加载页面时,我的 JS 函数应该填充一个下拉列表。它只有在页面刷新时才能正常工作。
据我了解,这是因为我想填充,使用 innerHTML 并且 JS 函数的调用速度比我的 HTML 页面快。
我的浏览器中也出现此错误:
Uncaught TypeError: Cannot read property 'innerHTML' of null
at XMLHttpRequest.xmlHttpRequest.onreadystatechange
我有一个调试方案,但我不能把它留在那里。我所做的是,每次打开该页面时,我都会自动刷新整个页面。但是我的浏览器每次都问我是否想这样做。因此,至少可以说这不是一个很好的解决方案。
我可以做些什么来防止这种情况发生吗?
编辑:
document.addEventListener("DOMContentLoaded", pupulateDropDown);
function pupulateDropDown() {
var servletURL = "./KategorienHolen"
let xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function () {
if (xmlHttpRequest.readyState === 4 && xmlHttpRequest.status === 200) {
console.log(xmlHttpRequest.responseText);
let katGetter = JSON.parse(xmlHttpRequest.responseText);
JSON.stringify(katGetter);
var i;
for(i = 0; i <= katGetter.length -1; i++){
console.log(katGetter[i].id);
console.log(katGetter[i].kategorie);
console.log(katGetter[i].oberkategorie);
if (katGetter[i].oberkategorie === "B") {
document.getElementById("BKat").innerHTML += "<a href=" + "DisplayKlamotten" + "?searchfor=" + katGetter[i].kategorie + ">" + katGetter[i].kategorie + "</a></br>";
} else if (katGetter[i].oberkategorie === "S") {
document.getElementById("SKat").innerHTML += "<a href=" + "DisplayKlamotten" + "?searchfor=" + katGetter[i].kategorie + ">" + katGetter[i].kategorie + "</a></br>";
} else if (katGetter[i].oberkategorie ==="A") {
document.getElementById("ACat").innerHTML += "<a href=" + "DisplayKlamotten" + "?searchfor=" + katGetter[i].kategorie + ">" + katGetter[i].kategorie + "</a></br>";
}
// document.getElementsByClassName("innerDiv").innerHTML = "<a href=" + "DisplayKlamotten" + "?=" + katGetter.kategorie + ">" + katGetter.kategorie + "</a>";
// document.getElementById("test123").innerHTML = "<a href=" + "DisplayKlamotten" + "?searchfor=" + katGetter.kategorie + ">" + katGetter.kategorie + "</a>";
}
}
};
xmlHttpRequest.open("GET", servletURL, true);
xmlHttpRequest.send();
}
【问题讨论】:
-
确保你的JS在DOM content has loaded之后运行。
-
我编辑了代码。我想在加载 JS 之前等待 1 秒。
标签: javascript html