[英]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
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.