我正在尝试在我的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
- 用户访问形式单机器单浏览器(极少数情况( 在此您可以使用本地存储
- 用户访问形式单机器多浏览器 在这种情况下,您必须将其保存在服务器端
- 用户访问形成多个计算机多浏览器 在这种情况下,您必须将其保存在服务器端
两种情况2,3都是相同的,您需要将其保存在服务器中。
执行此操作的一种常见方法,让您在DB中进行计数器和一个休息点,并在页面上调用该端点每个页面加载以将计数器表单为服务器,并在单击服务器上的更新Bive Selly End Point
建议学习:客户端:Ajax(jQuery(,服务器端:REST API,DB(MySQL,ETS(