【发布时间】:2021-04-10 01:51:15
【问题描述】:
我尝试在 js 中为我的网页制作一个查看计数器。
当您查看页面时,计数器会增加 1。
显示计数的数字。
但有一件事不起作用:当我从另一台设备查看网站时,计数器从 0 开始。
所以我使用 localStorage 来存储数据。但是我希望当我从笔记本电脑看到页面时,计数器增加一。当我通过手机查看页面时,计数器应该已经显示数字 1,并且应该增加 1,因此计数器将为 2。
我不知道如何使它可行。仅使用 LocalStorage 完成。我想我应该通过将数据存储在 .txt 文件中来保存数据,但它不起作用,因为当文件编写器将数据 (1) 保存到文件中时,它会将下一个视图 (1) 保存在上一个视图旁边数字。如果我想将当前数字添加到上一个数字,它将显示数字 1。
这是我的代码:
var n = localStorage.getItem('profile_1_tech.html');
if (n === null) {
n = 0;
}
n++;
localStorage.setItem("profile_1_tech.html", n);
document.getElementById('counter').innerHTML = n;
<span><span id="counter"></span> Views</span>
所以我需要添加结果(1 个视图 + 每个视图 1 个视图),并且所有用户都可以看到相同的数字。
【问题讨论】:
-
如果您想创建一个在设备之间共享的计数器,您需要将该信息存储在所有设备都可以访问它的地方,例如服务器。仅使用客户端 JavaScript 无法实现这一点。
-
扩展@Ivar 的评论,之所以出现这种情况,是因为即使在同一设备上加载浏览器时,客户端 JavaScript 上分配的变量也会重置。服务器将允许您进行 API 调用,或连接到
websocket(用于实时更新),或您想使用的任何方法来访问计数器,这些方法将存储在服务器上并在服务器中更新. -
所以我无法在 localhost 上使用 websocket?
-
如果您在两个设备上从 localHost 加载页面,如果您更新文件并在显示之前读取文件,它可以工作。您需要 ajax 文件
标签: javascript html css file local-storage