【问题标题】:Display click count in JavaScript before the count在计数之前显示 JavaScript 中的点击计数
【发布时间】:2019-02-12 00:44:08
【问题描述】:

我有一个简单的脚本,用于在每次单击图像时增加一个计数器:

<script>
function clickCounter() {
  if (typeof(Storage) !== "undefined") {
    if (localStorage.clickcount) {
      localStorage.clickcount = Number(localStorage.clickcount) + 1;
    } else {
      localStorage.clickcount = 1;
    }
    document.getElementById("counter").innerHTML = localStorage.clickcount;
  } else {
    document.getElementById("counter").innerHTML = "Your browser does not support web storage...";
  }
}
</script>

html:

<img id="heart" src="../assets/images/redheart.png" title="Give Love!" onclick="clickCounter()"><p id="counter"></p>

它工作正常,但我希望能够在点击之前显示计数。现在,计数器仅在单击图像按钮后显示。

感谢您的所有意见。

【问题讨论】:

  • 所以制作一个输出它的方法并在页面加载时调用它

标签: javascript onclick click-counting


【解决方案1】:

如果这不是你想要的,请告诉我。

首先,进行一些调整:

  • 出于可访问性原因:

    • 我将&lt;img&gt; 设为&lt;button&gt;(带有背景图片)。按钮易于使用且键盘友好(Tab、Enter 键等)
    • 为按钮添加了aria-label,因为它不包含文本内容
  • 稍微清理了 JavaScript。

行为:

在第一页加载...

然后我们执行五次点击,然后刷新页面。

注意:由于编辑器中的安全限制,此演示无法在 Stack Overflow 上运行。查看我创建的fiddle

document.querySelector("button").addEventListener("click", clickCounter);
document.addEventListener("DOMContentLoaded", showValue);

let counter = document.getElementById("counter");

function showValue() {
  counter.innerHTML = `Current count = ${localStorage.clickcount || 0}`;
}

function clickCounter() {
  if (typeof(Storage) !== "undefined") {
    if (localStorage.clickcount) {
      localStorage.clickcount = Number(localStorage.clickcount) + 1;
    } else {
      localStorage.clickcount = 1;
    }
    showValue();
  } else {
    counter.innerHTML = "Your browser does not support web storage...";
  }
}
button {
  background-image: url(http://icons.iconarchive.com/icons/benzlee/free-christmas/512/heart-icon.png);
  background-repeat: no-repeat;
  background-size: 64px 64px;
  background-color: transparent;
  border: none;
  display: inline-block;
  width: 64px;
  height: 64px;
  cursor: pointer;
}
<button title="Give Love!" aria-label="Give Love!">
<div id="counter"></div>

https://jsfiddle.net/mgejhcnf/3/

【讨论】:

  • 这正是我所寻找的:) 虽然我似乎无法让它工作。我像你一样使用“img”id而不是“button”。也许我忽略了一些东西。我会继续努力让你知道。谢谢!
  • @dreamerdan 也许在Plunkr 上重新创建您的完整演示,我可以在那里为您提供帮助。
  • @dreamerdan 将JavaScript 放在页面底部,关闭&lt;/body&gt; 标记之前,并将其包围在&lt;script&gt;&lt;/script&gt; 中。
  • 我让它工作了。我会将它整合到我的页面中。我可能需要添加一些与会话有关的额外代码,以允许用户只喜欢一次。我对此很陌生,但学得很快。我正在建立一个约会网站,如果你有空,请告诉我。我可以使用您的服务:) 再次感谢您的意见!
  • @dreamerdan 我可以从事全栈合同工作。请联系我here
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多