我正在尝试基于数据库中的信息创建一个动态按钮列表(使用NeDB)。因此,我能够调用数据,创建按钮并添加一个eventListener,但是,事件侦听器中的地址似乎无法重定向到正确的页面。看来是重新加载了页面。我的问题是,有没有人解释为什么会发生这种情况,是否有解决方案?
我一直试图尝试更改代码的顺序,以便在将按钮附加到表单之前添加按钮的eventListener。我也尝试使用window.open();
代替location.href="";
,但两者都不起作用。
window.onload = function() {
fetch('/address').then((res) => {
status = res.status;
return res.json();
}).then((jsonData) => {
for (var i = 0; i < jsonData.length; i++) {
localAddress = localStorage.getItem("address");
if (jsonData[i].address == localAddress) {
var room = jsonData[i].room;
var roomname = room.name;
var roomcondition = room.condition;
var newButton = document.createElement("button");
newButton.innerHTML = roomname;
if (roomcondition == true) {
newButton.style.backgroundColor = "#00ff00";
} else {
newButton.style.backgroundColor = "#ff0000";
}
var form = document.getElementById("myForm");
newButton.addEventListener("click", function() {
window.open("http://localhost:8080/" + room + ".html", "_self");
});
form.appendChild(newButton);
}
}
}).catch((err) => {
console.error(err);
});
}