对于我的生活,我无法弄明白这一点,并想知道是否有人可以提供帮助......
我的儿子正在做一些html作业。我们正在尝试设置一个页面计数器,它将计算并显示页面的点击次数。他有一个索引和另外三页。我把它放在每一页上:
<div class="page-count">
<script type="text/javascript">
if (localStorage.pagecount)
{
localStorage.pagecount=Number(localStorage.pagecount) +1;
}
else
{
localStorage.pagecount=1;
}
document.write("You've had "+ localStorage.pagecount + " hits.");
</script>
</div>
问题在于它将所有匹配计算在一起而不是每页有多少次点击...我怎样才能计算单页上的点击量而不是总点击数?
提前致谢。
答案 0 :(得分:2)
localStorage
是域范围的,其值在整个网站上共享,而不仅仅是该网站上的一个页面。 localStorage
值也仅保留在用户中。浏览器而不是托管您网站的服务器。如果要构建页面计数器,请记住这一点。
如果您使用localStorage
来统计,则只会记录特定用户从特定计算机访问该网页的次数。
如果这确实是您正在寻找的功能,您可以通过为每个单独的页面在pagecount
对象中提供单独的密钥来使其工作。
类似的东西:
// If this is the first time someone has visited your site, you want
// to check to see if pagecount has been defined. If not, define the pagecount object.
!localStorage.pagecount ? localStorage.pagecount = {} : '';
var currentPage = window.location.href;
if(localStorage.pagecount[currentPage]){
localStorage.pagecount[currentPage] = Number(localStorage.pagecount[currentPage]) + 1;
}
else{
localStorage.pagecount[currentPage] = 1;
}
以上为您的pagecount
对象提供了您网站上存在的每个网页的密钥。
答案 1 :(得分:1)
由于localStorage
适用于同一域下的所有网页,因此会计算相同的数字。
如果您想区分它们,可以尝试这样的事情:
var url_segment = window.location.href.split('/');
var script_name = url_segment[url_segment.length - 1];
if (localStorage[script_name]) {
localStorage[script_name] = parseInt(localStorage[script_name]) + 1;
}
else {
localStorage[script_name] = 1;
}
document.write("You've had "+ localStorage[script_name] + " hits.");
请注意,我不想将整个路径用作我的密钥,只使用我的脚本名称。你很可能会使用整个路径,我只是觉得这更漂亮。