简体   繁体   English

单击图像并计算点击次数(Javascript)时如何使用.addEventListener

[英]how to use .addEventListener when clicking an image and counting the clicks (Javascript)

//* I am trying to click on an image and it counts the clicks*// //* 我正在尝试点击一张图片,它会计算点击次数*//

var addUp = function(counterId) {
  var count = 0;

elem.addEventListener('click', function(counterID){
    return function () {
        var counterEle = document.getElementById(counterId);
    if (counterEle)
        counterEle.innerHTML = "Picture Clicks: " + ++count;
       }
    };
   
var elem = document.getElementById('PicC');
    PicC.addEventListener("click", addUp("PicC-counter"), false);

<img id="PicC" src="avatar.png" alt="Avatar" style="width:200px" onclick="addUp()">
function clickCount(element, listener) {
  if (!element) throw new Error("No element to listen to");
  let clickCountObj = {};
  clickCountObj.clickCount = 0;
  clickCountObj.clickDelay = 500;
  clickCountObj.element = element;
  clickCountObj.lastClickTime = 0;
  let clickCountListener = function (e) {
    if ((e.timeStamp - clickCountObj.clickDelay) < clickCountObj.lastClickTime) {
      clickCountObj.clickCount = clickCountObj.clickCount + 1;
    }
    else {
      clickCountObj.clickCount = 1;
    }
    clickCountObj.lastClickTime = e.timeStamp;
    listener.call(element, clickCountObj.clickCount, e);
  };
  clickCountObj.remove = function () {
    element.removeEventListener("click", clickCountListener);
  }
  element.addEventListener("click", clickCountListener);
  return clickCountObj;
}

You've made it much more complex than it needs to be.你让它变得比它需要的复杂得多。

 const output = document.getElementById("count"); document.getElementById('PicC').addEventListener("click",function(event){ output.textContent = +output.textContent + 1; });
 <img id="PicC" src="avatar.png" alt="Avatar" style="width:200px"> <div>Click count = <span id="count">0</span></div>

Here's what went wrong, as far as I can tell:据我所知,这是出了什么问题:

  • addEventListener was inside a function addEventListener在 function 内
  • addEventListener doesn't accept function parameters addEventListener不接受 function 参数
  • count was being reset every click每次点击都会重置count
  • and more和更多

You can simply hook up the event listener to a function that'll increment clicks and add the value to the click counter.您可以简单地将事件侦听器连接到 function,这将增加clicks并将值添加到点击计数器。

 var clicks = 0; document.getElementById("clickme").addEventListener("click", addClick); function addClick() { clicks++; document.getElementById("clickCounter").innerHTML = "Picture Clicks: " + clicks; }
 #clickme { background-color: black; width: 100px; height: 100px;
 <div id="clickme"></div> <:-- replaced with div for convenience --> <div id="clickCounter">Picture Clicks: 0</div>

There's no need of addEventListener for such a simple task.对于这样一个简单的任务,不需要addEventListener

My suggestion (no CSS added):我的建议(没有添加 CSS):

 var i = 1; PicC.onclick = () => { counter.innerHTML = i; i++; }
 <img id="PicC" src="https://via.placeholder.com/150" alt="Avatar"> <br> <div>Click(s): <span id="counter">0</span></div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM