如何在不同页面上保留JavaScript值
我有一个函数,它获取一个需要跨多个页面访问的值(下面的函数) 当函数被激发时,它会将值保存到变量中,但是当我在另一个页面上访问它时,值就消失了。我尝试使用以下方法:如何在不同页面上保留JavaScript值,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个函数,它获取一个需要跨多个页面访问的值(下面的函数) 当函数被激发时,它会将值保存到变量中,但是当我在另一个页面上访问它时,值就消失了。我尝试使用以下方法: window.onload = function() { var currentProperty = 'nothing' localStorage.setItem("prop", currentProperty); } function goTo(ele){ var firstLine = ele.getAt
window.onload = function() {
var currentProperty = 'nothing'
localStorage.setItem("prop", currentProperty);
}
function goTo(ele){
var firstLine = ele.getAttribute('value');
var user = firebase.auth().currentUser;
var ref = firebase.database().ref().child("users").child(user.uid).child('rentingAddresses');
ref.orderByChild("firstLine").equalTo(firstLine).once("value", function(snapshot) {
snapshot.forEach(function(child) {
currentProperty = child.key;
console.log(currentProperty);
});
});
}
但它似乎也不起作用。离开包含函数的页面后,是否有其他方法保留该值
TYIA.您的代码中有几个问题:
window.onload = function() {
var currentProperty = 'nothing'
localStorage.setItem("prop", currentProperty);
}
这意味着每次加载页面时,您都会在本地存储中设置prop='nothing'
。没有别的事情发生
您可能还希望将从数据库读取的值写入本地存储。在这种情况下,您应该在one(“value”
处理程序的回调中执行此操作:
ref.orderByChild("firstLine").equalTo(firstLine).once("value", function(snapshot) {
snapshot.forEach(function(child) {
currentProperty = child.key;
localStorage.setItem("prop", currentProperty);
});
});
通过此更改,您将本地存储更新为从数据库读取的值
在下一页中从本地存储器读取值
在下一页中,您需要从本地存储中读回该值。鉴于您已经显示的代码,我希望您可以通过以下方式执行此操作:
window.onload = function() {
var currentProperty = localStorage.getItem("prop");
// TODO: do something with currentProperty
}
注意,也可以简单地从数据库中重新读取值并使用它:
ref.orderByChild("firstLine").equalTo(firstLine).once("value", function(snapshot) {
snapshot.forEach(function(child) {
currentProperty = child.key;
// TODO: do something with currentProperty
});
});
使用
localStorage
或sessionStorage
@Barmar是正确的,您有两个基本的选择。这方面的问题也相当广泛。很抱歉最近的回答,我想我已经回答了。谢谢您的帮助,您的方法很有效!!!:)
ref.orderByChild("firstLine").equalTo(firstLine).once("value", function(snapshot) {
snapshot.forEach(function(child) {
currentProperty = child.key;
// TODO: do something with currentProperty
});
});