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

home2 게시판 JavaScript, TS 게시판 변수를 전역변수화했는데 왜 작동이안되는지모르겟습니다

변수를 전역변수화했는데 왜 작동이안되는지모르겟습니다

  • 이 주제에는 4개 답변, 2명 참여가 있으며 투썸2 년, 9 월 전에 전에 마지막으로 업데이트했습니다.
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #46729

    투썸
    참가자
    <body>
              <div class="main">
            <h1>ToDoList</h1>
            <form>
                <input type="text" placeholder="새로운 할 일" name="todo">
                <button type="submit"><b>추가</b></button>
            </form>
            <div class="todolist">

    </div> </div> <script>

    init();
    function init(){
            
        let input = document.querySelector('input');
        let ul = document.querySelector('ul');
        
            document.querySelector('form').addEventListener('submit', function(e){e.preventDefault();
            addTask();
            input.value = '';
            input.focus();})  //입력창 비워주기});
            
            ul.addEventListener('click', function(e){
            if(e.target.className == 'delete')
            e.target.parentNode.remove();});
        function addTask(){
            let li = document.createElement('li');
            li.innerHTML = `<span class="delete">x</span><label>${input.value}</label>`;
            ul.appendChild(li);
    }
    }
              
          </script>
    작동이 잘되다가
    위 코드에서 addTask 함수안에 let li = document.createElement('li'); 를 밖으로 꺼내서
    init 함수안에 선언하니 작동이 안됩니다 
    addTask 함수를 없애고 풀어봐도
    let li = document.createElement('li'); 
    li.innerHTML = `<span class="delete">x</span><label>${input.value}</label>`;
    이 두줄 사이에 한문장이라도 들어오면 작동이 이상해지는데
    
    함수안에선 변수선언 어디에서 해도 전부 호이스팅 되는줄알았는데
    왜안되는지 너무궁금합니다 
    자기가 속해있는 상위함수안에 변수를 선언하면 되야할거같은데 
    안되네요 ㅠ
    
    도와주세요 선생님 ..
    #46757

    codingapple
    키 마스터
    복붙해보니 콘솔창에 ul 변수가 비었다는 에러부터 뜨는군요 그거부터 해결합시다
    #46786

    투썸
    참가자
    <div class="todolist">
    밑에  < u l >< /  u l > 이거 붙여쓰기하고 등록하니 글에서 없어지네요
    
    오류인가 모르겠습니다 

      저것 넣고 다시했을때 실행이 잘되는데 위 코드에서 addTask 함수안에 let li = document.createElement('li'); 를 밖으로 꺼내서 init 함수안에 선언하니 작동이 안되네요 addTask 함수를 없애고 풀어봐도 let li = document.createElement('li'); li.innerHTML = `<span class="delete">x</span><label>${input.value}</label>`; 이 두줄 사이에 한문장이라도 들어오면 작동이 이상해지는데 그이유를 찿긴 힘든가요 일할때도 이럴수있을까봐 겁나네요 ..

       

       < u l >< /  u l >

      #46817

      codingapple
      키 마스터
      let li를 밖에 빼면 버튼누를 때 마다 <li>를 append 해주는게 아니라 갈아치워줘서 그런듯요
      나머지 버그는 컴퓨터와 에디터 껐다켭시다
      #46841

      투썸
      참가자
      감사합니다 선생님
    5 글 보임 - 1 에서 5 까지 (총 5 중에서)
    • 답변은 로그인 후 가능합니다.

    About

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

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

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