在我的第一个页面上,我有两个输入框和一个将输入添加到localStorage的按钮。添加数据后,我想触发一个事件,该事件将在另一个页面上写出localStorage的内容。我的问题是我的脚本找不到第二页上的元素。
将数据添加到localStorage的代码:
$("#submitLocal").click(function () {
var key = inputKey.value;
var value = inputValue.value;
localStorage.setItem(key, value);
if (newWindow == null || newWindow.closed) {
newWindow = window.open("local.html", "localWindow");
}
window.dispatchEvent(new Event("storage"));
});我添加了事件侦听器:
window.addEventListener("storage", myFunc);它调用函数:
function myFunc(event) {
document.getElementById("addInfo").innerHTML = "";
for (var i = 0; i < localStorage.length; i++) {
$("#addInfo").append(
localStorage.key(i) +
" " +
localStorage.getItem(localStorage.key(i)) +
"<br>"
);
}
}现在,元素"addInfo“在第一个页面上,localStorage中的数据被写出到页面上。但是如果在第二页上找不到元素,我该怎么做呢?
我是stackoverflow的新手,所以我希望我能很好地描述这个问题。
提前谢谢。
发布于 2021-02-05 17:42:02
发布相关代码总是有帮助的。在这种情况下,什么是$("#submitLocal")?如果是表单中的提交按钮,则使用表单提交事件和preventDefault!
为什么要在事件中调度事件?
只需使用您所在的位置和page2中的load事件
主页
$("#myForm").on("submit", function (e) {
e.preventDefault();
var key = inputKey.value;
var value = inputValue.value;
localStorage.setItem(key, value);
if (newWindow == null || newWindow.closed) {
newWindow = window.open("local.html", "localWindow");
}
});local.html
function myFunc(event) {
$("#addInfo").empty();
for (var i = 0; i < localStorage.length; i++) {
$("#addInfo").append(
localStorage.key(i) +
" " +
localStorage.getItem(localStorage.key(i)) +
"<br>"
);
}
}
window.addEventListener("load",myFunc)https://stackoverflow.com/questions/66060856
复制相似问题