gpt4 book ai didi

javascript - 图像点击计数器事件监听器问题

转载 作者:行者123 更新时间:2023-12-03 05:13:59 28 4
gpt4 key购买 nike

所以我正在为我的 Udacity 类(class)中的一个项目创建一个“Cat Clicker”。基本上,我们有 5 张猫的图片(我目前有 4 张),但每个猫图像都应该有自己的点击计数器,以便在单击特定图像时使用。我知道有一种方法可以使用一个 for 循环,但不知道如何使用。我一直在尝试为每个单独的图像使用 addeventlistener ,但是它会计算页面上的每次点击(无论在哪里)...有人能弄清楚我错过了什么/做错了什么吗?

var sassy = document.createElement("img");
sassy.src = 'images/cat.jpg';
sassy.height = "500";
sassy.width = "640";
sassy.alt = "Sassy Cat";
document.getElementById("catimage").appendChild(sassy);

var addUp = (function() {
var count = 0;
return function() {
var sassy = document.getElementById("catimage");
if (sassy) sassy.innerHTML = "Picture Clicks: " + ++count;
}
}());
document.addEventListener("click", addUp, false);

var grumpy = document.createElement("img");
grumpy.src = 'images/grumpy-cat.jpg';
grumpy.height = "500";
grumpy.width = "640";
grumpy.alt = "Grumpy Cat";
document.getElementById("grumpyimage").appendChild(grumpy);

var cuddlecats = document.createElement("img");
cuddlecats.src = 'images/cuddles.jpg';
cuddlecats.height = "500";
cuddlecats.width = "640";
cuddlecats.alt = "Cuddling Cats";
document.getElementById("cuddlingcats").appendChild(cuddlecats);

var sketchy = document.createElement("img");
sketchy.src = 'images/sketchycat.jpg';
sketchy.height = "500";
sketchy.width = "640";
sketchy.alt = "Sketchy Cat";
sketchy.co
document.getElementById("sketchycat").appendChild(sketchy);
<div id="catimage">
<figcaption>Sassy Cat</figcaption>
<h3 id="sassycount">Picture Clicks: 0</h3>
</div>

<div id="grumpyimage">
<figcaption>Grumpy Cat</figcaption>
<h3 id="grumpycount">Picture Clicks: 0</h3>
</div>
<div id="cuddlingcats">
<figcaption>Cuddling Cats</figcaption>
<h3 id="cuddlecount">Picture Clicks: 0</h3>
</div>
<div id="sketchycat">
<figcaption>Sketchy Cat</figcaption>
<h3 id="sketchcount">Picture Clicks: 0</h3>
</div>

最佳答案

您正在将事件监听器添加到文档,因此无论您单击的任何位置,无论是否单击图像,都会调用函数addUp

为了将事件附加到特定元素,您必须在该元素上调用 addEventListener

var grumpyimage = document.getElementById("grumpyimage");
grumpyimage.addEventListener("click", addUp, false);

现在您可以点击grumpyimage,它将调用addUp为简单起见,您应该为每个图像使用一个 addUp 函数。

请记住,您应该将此概括为仅使用一个 addUp 函数,并根据计数器的 id 递增计数器,如下所示:

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

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

关于javascript - 图像点击计数器事件监听器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com