Javascript 其他事件监听器意外

Javascript Eventlistener unexpected else

有人能告诉我这个 eventListener 有什么问题吗? 我一直在上面收到意想不到的标记 'else',但不明白为什么。

JS:

hearts.forEach((span) => span.addEventListener("click", (event) => {
  
  if( heart.classList.contains("liked")){
    $('.photoLikes').each(function() {
      sum = sum + (.35);
    } ) ;
    likeInfo.textContent=  (parseFloat(sum).toFixed(0)) ;
  } ; 
                
  else{
    $('.photoLikes').each(function() {
      sum = sum - (.35);
    } ) ;
    likeInfo.textContent=  (parseFloat(sum).toFixed(0)) ;
  } ; 
}

完整代码CodePen(JS末尾注释中的事件监听器):

https://codepen.io/enukeron/pen/qBaZNbb?editors=1111

看起来你在 if 语句后多了一个分号:

if () {
} ;
else {
} ;

这些分号都不需要。

不要在 if/else 语句后放置分号。它们会破坏表达式,导致 else 不附加到 if:

hearts.forEach((span) =>
    span.addEventListener("click", (event) => {
        if (heart.classList.contains("liked")) {
            $(".photoLikes").each(function () {
                sum = sum + 0.35;
            });
            likeInfo.textContent = parseFloat(sum).toFixed(0);
        } else {
            $(".photoLikes").each(function () {
                sum = sum - 0.35;
            });
            likeInfo.textContent = parseFloat(sum).toFixed(0);
        }
    })
);

你最后还漏了两个右括号,我加进去了。

这里有两件事

  • else 前的分号无效
  • 您错过了 span.addEventListener(hearts.forEach(
  • 的 2 个右括号

修改应该是

hearts.forEach((span) => span.addEventListener("click", (event) => {
  if( heart.classList.contains("liked")){
    $('.photoLikes').each(function() {
      sum = sum + (.35);
    } ) ;
    likeInfo.textContent=  (parseFloat(sum).toFixed(0)) ;
  } // <-----------

  else{
    $('.photoLikes').each(function() {
      sum = sum - (.35);
    } ) ;
    likeInfo.textContent=  (parseFloat(sum).toFixed(0)) ;
  }
})) // <-----------