【问题标题】:Javascript Eventlistener unexpected elseJavascript Eventlistener 出乎意料
【发布时间】:2020-12-07 15:40:20
【问题描述】:

谁能告诉我这个事件监听器有什么问题? 我不断收到意外的标记“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 块后面的;(分号)不属于那里。另外,您最后没有关闭forEacht()addEventListener()((括号)。

标签: javascript if-statement event-listener unexpected-token


【解决方案1】:

不要在 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);
        }
    })
);

你最后还缺少两个右括号,我添加了。

【讨论】:

【解决方案2】:

if 语句后面好像多了一个分号:

if () {
} ;
else {
} ;

这些分号都不需要。

【讨论】:

    【解决方案3】:

    这里有两件事

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

    修改应该是

    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)) ;
      }
    })) // <-----------
    

    【讨论】:

    • “分号”而不是“逗号”,但在其他方面很好的答案:)
    • 分号不是“多余的”,只是错了。
    • @OskarGrosser 我更新了我的答案,谢谢
    猜你喜欢
    • 2015-06-25
    • 2014-09-11
    • 2013-07-15
    • 1970-01-01
    • 2018-07-14
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多