如何使JS计数器永久保留数量



我正在尝试在我的tumblr上制作一个包含一个按钮的页面,这计算了按下多少次。我已经开始工作了,但是浏览器关闭或刷新可以清除该价值,而来自不同人的点击不堆叠。这是我所拥有的:

<body>
  <div class="main">
    <h3>Click Counter</h3>
    <button id="clickme">Click me: 0</button>
    <h5>Filler Text</h5>
  </div>
  <script>
    var button = document.getElementById("clickme"),
        count = 0;
        
    button.onclick = function() {
      count += 1;
      button.innerHTML = "Click me: " + count;
    };
  </script>
</body>

这会使按下按钮计数,但我希望它的行为如此:

用户#1点击两次。计数器读两个。

用户#2访问页面,计数器已经在2处,用户单击3次。计数器为5。

用户#3访问,计数器仍然为5,等等。

截至目前,每个用户访问页面,值始于零。帮助?

根据您的需求,您可以使用localstorage。

count = localStorage.getItem('count');
count = parseInt(count); // because localstorage stores everything in strings
// First time the value does not exist...
if(count == null) {
  count = 0; 
}
button.onclick = function() {
  count += 1;
  button.innerHTML = "Click me: " + count;
  localStorage.setItem("count", count);
};

这不是服务器端解决方案。它也不可靠,因为用户可以随时清除。

javaScript在浏览器上运行并将所有变量存储在浏览器中,因此变量的范围在浏览器中。您可以使用本地存储,但是如果所有用户都使用相同的浏览器,而这不是您的需要,那么持续数据的唯一方法是将计数(数据(保存到服务器中,并在页面的负载上获取计数(数据(。

如果没有任何服务器,则可以使用firebase real-time database

Web的Firebase实时数据库

开始

由于我要保留用户点击计数的您的问题,因此有3个scenerio

  1. 用户访问形式单机器单浏览器(极少数情况( 在此您可以使用本地存储
  2. 用户访问形式单机器多浏览器 在这种情况下,您必须将其保存在服务器端
  3. 用户访问形成多个计算机多浏览器 在这种情况下,您必须将其保存在服务器端

两种情况2,3都是相同的,您需要将其保存在服务器中。

执行此操作的一种常见方法,让您在DB中进行计数器和一个休息点,并在页面上调用该端点每个页面加载以将计数器表单为服务器,并在单击服务器上的更新Bive Selly End Point

建议学习:客户端:Ajax(jQuery(,服务器端:REST API,DB(MySQL,ETS(

相关内容

最新更新