如何在不同页面上保留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
      });
    });