JS setInterval을 지우고 setInterval이 반복되지 않도록하는 방법은 무엇입니까?

Dr_Haircake

신호등이 나타나는 간단한 HTML / CSS / JS 프로그램을 만들고 있습니다. "자동"과 "수동"의 두 가지 버튼이 있습니다. "자동"을 클릭하면 신호등이 저절로 색상을 통과하는 것을 볼 수 있습니다. 나는 이것을 setInterval로 달성했습니다. "수동"을 클릭하면 제어를 수동으로 전환하고 수동으로 만 색상을 변경할 수 있습니다. 저는 Javascript를 처음 사용했으며 현재 문제는 자동에서 수동으로 이동할 때 setInterval이 계속 실행되므로 수동을 누르 자마자 신호등의 색상이 변경되지만 표시등도 계속 변경된다는 것입니다. 스스로. 또한 "자동"버튼을 두 번 클릭 할 수 있습니다. 즉, 더 많이 누를수록 색상이 빠르게 변경되기 시작합니다.

HTML :

<html>
  <head>
    <title>Traffic Lights</title>
    <link rel="retylesheet" type="text/css" href="css/restyle.css"/>
    <link rel="stylesheet" type="text/css" href="traffic.css"/>
  </head>
  <body>
    <a class="auto">Auto</a>
    <div class="trafficlight">
      <div class="circle red" color="red"></div>
      <div class="circle orange" color="orange"></div>
      <div class="circle green" color="green"></div>
    </div>
    <a class="manual">Manual</a>
  </body>
  <script type="text/javascript" src="traffic.js"></script>
</html>

CSS :

* {
  box-sizing: border-box;
}

body{
  background-color:#eb3456;
  min-height:100vh;
  margin:0;
  display:flex;
  align-items:center;
  justify-content:center;
}
.circle{
  border-radius:50%;
  position:relative;
  height:80px;
  width:80px;
  background-color:rgba(0,0,0,0.3);
}

.trafficlight{
  display: flex;
  align-items:center;
  justify-content: space-between;
  flex-direction: column;
  padding:30px;
  width:150px;
  height:400px;
  background-color: #A9A9A9;
}

.circle.red{
  background-color: red;
  box-shadow: 0 0 40px 10px red;
}
.circle.orange{
  background-color: orange;
  box-shadow: 0 0 40px 10px orange;
}
.circle.green{
  background-color: green;
  box-shadow: 0 0 40px 10px green;
}
a{
  background-color: #A9A9A9;
  color: white;
  padding: 7px 12px;
  text-align: center;
  text-decoration: none;
  margin: 10px;
  cursor:pointer;
}
a:hover, a:active{
  background-color: #545252;
}

JS :

const circles = document.querySelectorAll(".circle");
const auto = document.querySelector(".auto");
const manual = document.querySelector(".manual");
let active=0;
function changeLight(){
  circles[active].className="circle";
  active++;
  if(active>2){
    active=0;
  }
  const current=circles[active];

  current.classList.add(current.getAttribute("color"));
}
auto.onclick = function(){
  setInterval(changeLight,1000);
}
manual.onclick = function(){
  clearInterval();
  changeLight();
}

나는 그것을 찾아 보았고 .onclick이 두 번 사용되는 것을 중지하는 방법 또는 수동을 눌렀을 때 clearInterval ()이 작동하지 않는 이유에 대해 아무것도 찾을 수 없습니다. 컴퓨터와 사용자간에 제어를 전환하여이 두 버튼이 작동하도록하는 방법에 대한 도움이 있으면 좋을 것입니다. 이것은 JS를 사용하는 첫 날입니다.

야사스 나빈

이 스크립트를 확인하십시오. 나는 이것이 당신이 필요하다고 생각합니다

const circles = document.querySelectorAll(".circle");
const auto = document.querySelector(".auto");
const manual = document.querySelector(".manual");
let active=0;

let isAuto= false;
let autofunction;

function changeLight(){
  circles[active].className="circle";
  active++;
  if(active>2){
    active=0;
  }
  const current=circles[active];

  current.classList.add(current.getAttribute("color"));
}
auto.onclick = function(){
    isAuto = true

    if(autofunction == undefined){
     autofunction =  setInterval(function(){
        if(isAuto){
            circles[active].className="circle";
            active++;
            if(active>2){
              active=0;
            }
        const current=circles[active];

        current.classList.add(current.getAttribute("color"));
        }


    },1000);
  }
  
 
}
manual.onclick = function(){
/*   clearInterval(); */
isAuto = false
  changeLight();
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기존 setInterval을 지우는 방법은 무엇입니까?

분류에서Dev

setInterval을 통해 div 요소의 이미지 배경을 설정하는 방법은 무엇입니까?

분류에서Dev

turn.js가 마우스 스크롤을 캡처하지 않도록하는 방법은 무엇입니까?

분류에서Dev

이 배열에서 반복되지 않는 유일한 값을 반환하는 방법은 무엇입니까?

분류에서Dev

CSS3 scrollbox 애니메이션을 다시 시작하지 않고 무한 반복하도록 수정하는 방법은 무엇입니까?

분류에서Dev

setInterval을 사용하여 앞에 값을 반복합니다. 한 번 추가하고 중지하는 방법은 무엇입니까?

분류에서Dev

나침반이 처리되지 않도록 방지하고 내 변수의 유니 코드 값을 대체하는 방법은 무엇입니까?

분류에서Dev

PHP에서 반복하지 않고 임의의 이름 목록을 만드는 방법은 무엇입니까?

분류에서Dev

setInterval ()을 사용하는 역방향 for 루프가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

길이가 고르지 않은 우편 번호 목록을 작성하는 방법은 무엇입니까?

분류에서Dev

내 setInterval을 지울 수없는 이유는 무엇입니까?

분류에서Dev

discord.js 봇이 접두사와 명령 이름을 포함하지 않고 사용자의 메시지를 반복하도록 만드는 방법은 무엇입니까?

분류에서Dev

배열이 여러 배열을 반환하지 않도록하는 방법은 무엇입니까?

분류에서Dev

여러 테이블을 반복하고 조건이 충족되는 경우에만 유지하는 방법은 무엇입니까?

분류에서Dev

Alpine이 읽은 메시지 이동을 요청하지 않도록하는 방법은 무엇입니까?

분류에서Dev

메모장 ++ 검색이 반복되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 반복되는 문자열 (티켓)을 방지하는 방법은 무엇입니까?

분류에서Dev

Meteor Autoform이 afFieldInput에 폼 컨트롤을 삽입하지 않도록하는 방법은 무엇입니까?

분류에서Dev

반복하지 않도록 무작위 조합을 만드는 방법은 무엇입니까?

분류에서Dev

Axios의 setInterval은 반복하지 않고 출력을 가져오고 업데이트합니다.

분류에서Dev

하나의 명령이 ERR 트랩을 트리거하지 않도록하는 방법은 무엇입니까?

분류에서Dev

하나의 명령이 ERR 트랩을 트리거하지 않도록하는 방법은 무엇입니까?

분류에서Dev

"사용되지 않는"것을 무시하고 파이썬 열거 형을 반복하는 방법은 무엇입니까?

분류에서Dev

JOptionPane을 닫은 후 JFrame이 맨 위로 오지 않도록하는 방법은 무엇입니까?

분류에서Dev

Windows OS 이미지가 복사되지 않도록 보호하는 방법은 무엇입니까?

분류에서Dev

Pandas Dataframe이 모든 행에서 열 이름을 반복하지 않도록하는 방법은 무엇입니까?

분류에서Dev

이 코드가 모든 워크 시트를 반복하지 않도록하는 방법은 무엇입니까?

분류에서Dev

화면이 잠겨있을 때 화면이 꺼지지 않도록하는 방법은 무엇입니까?

분류에서Dev

화면이 잠겨있을 때 화면이 꺼지지 않도록하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    기존 setInterval을 지우는 방법은 무엇입니까?

  2. 2

    setInterval을 통해 div 요소의 이미지 배경을 설정하는 방법은 무엇입니까?

  3. 3

    turn.js가 마우스 스크롤을 캡처하지 않도록하는 방법은 무엇입니까?

  4. 4

    이 배열에서 반복되지 않는 유일한 값을 반환하는 방법은 무엇입니까?

  5. 5

    CSS3 scrollbox 애니메이션을 다시 시작하지 않고 무한 반복하도록 수정하는 방법은 무엇입니까?

  6. 6

    setInterval을 사용하여 앞에 값을 반복합니다. 한 번 추가하고 중지하는 방법은 무엇입니까?

  7. 7

    나침반이 처리되지 않도록 방지하고 내 변수의 유니 코드 값을 대체하는 방법은 무엇입니까?

  8. 8

    PHP에서 반복하지 않고 임의의 이름 목록을 만드는 방법은 무엇입니까?

  9. 9

    setInterval ()을 사용하는 역방향 for 루프가 작동하지 않는 이유는 무엇입니까?

  10. 10

    길이가 고르지 않은 우편 번호 목록을 작성하는 방법은 무엇입니까?

  11. 11

    내 setInterval을 지울 수없는 이유는 무엇입니까?

  12. 12

    discord.js 봇이 접두사와 명령 이름을 포함하지 않고 사용자의 메시지를 반복하도록 만드는 방법은 무엇입니까?

  13. 13

    배열이 여러 배열을 반환하지 않도록하는 방법은 무엇입니까?

  14. 14

    여러 테이블을 반복하고 조건이 충족되는 경우에만 유지하는 방법은 무엇입니까?

  15. 15

    Alpine이 읽은 메시지 이동을 요청하지 않도록하는 방법은 무엇입니까?

  16. 16

    메모장 ++ 검색이 반복되는 것을 방지하는 방법은 무엇입니까?

  17. 17

    파이썬에서 반복되는 문자열 (티켓)을 방지하는 방법은 무엇입니까?

  18. 18

    Meteor Autoform이 afFieldInput에 폼 컨트롤을 삽입하지 않도록하는 방법은 무엇입니까?

  19. 19

    반복하지 않도록 무작위 조합을 만드는 방법은 무엇입니까?

  20. 20

    Axios의 setInterval은 반복하지 않고 출력을 가져오고 업데이트합니다.

  21. 21

    하나의 명령이 ERR 트랩을 트리거하지 않도록하는 방법은 무엇입니까?

  22. 22

    하나의 명령이 ERR 트랩을 트리거하지 않도록하는 방법은 무엇입니까?

  23. 23

    "사용되지 않는"것을 무시하고 파이썬 열거 형을 반복하는 방법은 무엇입니까?

  24. 24

    JOptionPane을 닫은 후 JFrame이 맨 위로 오지 않도록하는 방법은 무엇입니까?

  25. 25

    Windows OS 이미지가 복사되지 않도록 보호하는 방법은 무엇입니까?

  26. 26

    Pandas Dataframe이 모든 행에서 열 이름을 반복하지 않도록하는 방법은 무엇입니까?

  27. 27

    이 코드가 모든 워크 시트를 반복하지 않도록하는 방법은 무엇입니까?

  28. 28

    화면이 잠겨있을 때 화면이 꺼지지 않도록하는 방법은 무엇입니까?

  29. 29

    화면이 잠겨있을 때 화면이 꺼지지 않도록하는 방법은 무엇입니까?

뜨겁다태그

보관