"like button"功能只会在点击某个部分时增加它的喜欢数量



在"推荐给您"部分在";"每日食谱";贴,心脏按钮工作得很好。我想做的是让右侧帖子的点赞数量也增加。然而,每当我点击";推荐给您"部分,他们只会增加ROTD帖子的点赞数量。

以下是我使用的JavaScript和HTML代码:

console.log("JavaScript is connected");
let numCount = 68
let count = document.querySelector('.count')
function addLike () {
numCount ++
count.innerText = numCount
}
<div class="likebtn1">
<button class= "heartbtn" onclick="addLike()"><img src="imgs/heart.png" class="heart" alt="the heart-like button"></button>
<p class="yurilike"><span class="count">68</span></p>
</div>
<div class="likebtn2">
<button class="heartbtn" onclick="addLike()"><img src="imgs/heart.png" class="heart2" alt="the heart-like button"></button> 
<p class="Emilike"><span class="count">212</span></p>
</div>
<div class="likebtn3">
<button class="heartbtn" onclick="addLike()"><img src="imgs/heart.png" class="heart3" alt="the heart-like button"></button> 
<p class="Marisalike"><span class="count">33</span></p>
</div>

每当我试图为RFY部分的帖子创建单独的功能,并为其他心形按钮做同样的事情时,它们都会停止工作,什么都不做。

下面是一段视频,展示我所说的内容:https://www.youtube.com/watch?v=8NYqizDBkZk

这是因为querySelector总是返回与查询匹配的第一个元素。当你做
document.querySelector('.count')

它总是给您相同的.countdiv,无论按下了哪个类似的按钮。

您需要使用更具体的查询,如.likebtn2 .count,或者为每个计数指定一个唯一的类名。

document.body.addEventListener('click', (event) => {
const button = event.target.closest('.button');
if (!button) return;
const container = button.closest('.likes');
if (!container) return;
const counter = container.querySelector('.counter');
if (!counter) return;
counter.innerText = Number(counter.innerText) + 1;
});
<div class="likes">
<button class="button">I love it!</button>
<div class="counter">0</div>
</div>
<div class="likes">
<button class="button">I love it!</button>
<div class="counter">0</div>
</div>
<div class="likes">
<button class="button">I love it!</button>
<div class="counter">0</div>
</div>

将JS代码更改为我现有的代码,然后将this关键字添加到调用JS函数的按钮中。

function addLike(e){
let count = Number(e.nextElementSibling.innerText) + 1;
e.nextElementSibling.innerText = count;
}
<div class="likebtn1">
<button class= "heartbtn" onclick="addLike(this)"><img src="imgs/heart.png" class="heart" alt="the heart-like button"></button>
<p class="yurilike"><span class="count">68</span></p>
</div>
<div class="likebtn2">
<button class="heartbtn" onclick="addLike(this)"><img src="imgs/heart.png" class="heart2" alt="the heart-like button"></button> 
<p class="Emilike"><span class="count">212</span></p>
</div>
<div class="likebtn3">
<button class="heartbtn" onclick="addLike(this)"><img src="imgs/heart.png" class="heart3" alt="the heart-like button"></button> 
<p class="Marisalike"><span class="count">33</span></p>
</div>

最新更新