提问者:小点点

为什么第一次点击后,我需要点击两次才能反转


所以我的问题是,当我点击一个radiobutton来添加类“Completed”时,它执行了所要执行的操作,但是当我想要移除它时,我需要点击两次,我不知道为什么。如有任何帮助,我们将不胜感激。谢谢

HTML

<!DOCTYPE html>
<html>
<head>
  <title>Todo App</title>
  <link rel="stylesheet" type="text/css" href="TodoApp.css">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- displays site properly based on user's device -->
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <!-- ------ Meta Tags ------ -->
</head>
<body>
  <div id="container">
    <div id="topImage">
      <h1 id="topImage-title">T O D O</h1>
      <img onclick="test()" id="moon" src="images/icon-moon.svg">
      <img src="images/bg-mobile-light.jpg" width="100%" height="100%">  
    </div>

    <div class="newToDo">
      <input onclick="addTask()" id="ready" type="radio" name="ready">
      <input type="text" name="todoTask" id="todoTask" placeholder="Create a new todo...">
    </div>

    <div id="tasksBox">
      <div class="newTasks">
        <input onclick="completeTask()" type="radio" class="bttComplete" name="bttComplete">
        <span>Complete Online Javascript Course</span>
        <div onclick="deleteTask()" class="delete"></div>
      </div>
    </div>
  </div>

  <script src="jquery_library/jquery-3.5.1.min.js"></script>
  <script src="TodoApp.js"></script>
</body>
</html>

CSS

.completed{
    background-image: url(images/icon-check.svg);
    background-position: center;
    background-repeat: no-repeat;
}

JavaScript

function completeTask(){ 
  $(".newTasks").click(function(){
    if ($(this).children().hasClass('completed')){
      $(this).children().removeClass('completed');
    } else {
      $(this).children().addClass('completed');
    };
  });
}

共1个答案

匿名用户

可以尝试像w3schools中所示的那样使用toggleClass(),而不是使用if语句。看看能不能修好它。