• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 typewriting 강의를 들으며 settimeout 이벤트를 만드는데요.

typewriting 강의를 들으며 settimeout 이벤트를 만드는데요.

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #25925

    윤서준
    참가자

    typewriting 강의를 들으며 settimeout 이벤트를 만들고 있습니다.
    그런데 settimeout이 돌아가는 도중에 다시 버튼을 클릭하면 settimeout 두 개가 섞여서 나오는 버그가 발생해서 구글 검색으로 clearTimeout이란 이벤트를 사용했는데 작동이 잘 되지를 않습니다. 어떻게 수정하면 진행되던 settimeout을 초기화 시키고 새로 작동시킬 수 있을까요?'

    let h1태그 = document.querySelector("h1");
    let 원래글씨 = document.querySelector("h1").innerHTML;

    $(".btn").click(function () {
    timer();
    h1태그.innerHTML = " ";

    for (let i = 0; i < 원래글씨.length; i++) {
    var timeout = setTimeout(function () {
    h1태그.innerHTML =
    h1태그.innerHTML + 원래글씨[i]
    }, (i + 1) * 1000);
    }
    function timer() {
    clearTimeout(timeout);
    }

    #25930

    codingapple
    키 마스터

    var timeout을 이벤트리스너 바깥에 먼저 만들어놓고 setTimeout을 나중에 집어넣어봅시다 

    #25935

    윤서준
    참가자

    수정해 보았는데 아무래도 클릭시점에 setTimeout 3개가 동시에 작동하는 건지 중지가 되지 않더군요.
    그래서 다음과 같이 setInterval 로 바꾸니까 작동이 되었습니다!

    let h1태그 = document.querySelector("h1");
    let 원래글씨 = document.querySelector("h1").innerHTML;
    var timeout = 0;

    $(".btn").click(function () {
    clearInterval(timeout);
    h1태그.innerHTML = " ";

    var index = 0;
    timeout = setInterval(function () {

    h1태그.innerHTML = h1태그.innerHTML + 원래글씨[index++];
    if (index == 원래글씨.length) {
    clearInterval(timeout);
    }
    }, 1000);

    });

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠