• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

훈훈한 자바스크립트_eventListener를 활용한 태그 삭제

23.11.26 13:17 작성 조회수 139

0

아래코드를 입력했는데, newLi dblclick했을때 삭제처리가 되지 않습니다. 문제가 뭘까요?

const todoInput = document.querySelector("#todo-input");

const createTodo = function () {
  const todoList = document.querySelector("#todo-list"); //List자체를 받아오기
  const newLi = document.createElement("li");
  const newSpan = document.createElement("span");

  /**
   * pseudo: (addEventListner)
   * 할일이 완료가 된지 안된 일인지 알 수가 없음 -> EventListner를 추가
   * 버튼태그와 함께 온클릭 이벤트를 생성
   */

  //02-addEventListner파트: 버튼태그 추가 및 Event속성(onClick 추가)
  const newBtn = document.createElement("button");

  newBtn.addEventListener("click", () => {
    //클릭을 했을 때 어떻게 할지에 대한 내용을 익명 함수로 지정
    newLi.classList.toggle("complete"); //버튼을 눌렀을 때 새로운 클래스를 추가해준다
  });

  //02-addEventListner: 당연히 삭제도 되어야할텐데... (더블클릭 -> 삭제)
  newLi.addEventListener("dblclick", () => {
    newLi.remove();
  });

  newSpan.textContent = todoInput.value;
  newLi.append(newBtn);
  newLi.appendChild(newSpan);
  todoList.appendChild(newLi); //왜 굳이 span태그를 만들고 span 태그를 List에 추가한 건지는 알 수가 없으나.. 나중에 알려주겠지..
  todoInput.value = " ";

  console.log(newLi);
}; //여기까지만 했을때는 기능상 부족한 부분이 상당히 많음

const keyCodeCheck = function () {
  if (window.event.keyCode === 13 && todoInput.value) {
    //만약 키보드값에 대해 enter값이 눌리면 ->
    createTodo();
  }
};

답변 1

답변을 작성해보세요.

0

안녕하세요! nazombwa님!

현재 올려주신 코드를 그대로 복사하여 실험해 본 결과, 제대로 삭제되었어요!
js에는 문제가 있어 보이지 않네요!

혹시 연결된 html 등의 코드에 문제가 있지 않은지 확인해 보세요!^^