Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

109
Visualizações
¿Cómo puedo agregar y eliminar una clase de un elemento específico?

estoy haciendo una lista de tareas solo con javascript y css. Cuando agrego la tarea, crea un artículo con iconos h1 y 2. El icono de verificación y el icono de eliminación. Cuando hago clic en el ícono de verificación, agrega la clase que cambia el estilo del texto a línea. El problema es que se aplica a todos los h1 y quiero que se aplique solo a un h1 específico.

 function TaskName() { window.taskName = {}; window.taskName.handdleClick = () => { const $Task = document.querySelectorAll("h1"); $Task.forEach((e) => { e.classList.toggle("task-check"); }; window.taskName.delete = () => { ItemRemoval(); }; let $Input = document.getElementById("input-item"); let $task = $Input.value; return /*html*/ ` <article id='task-article'> <h1 id='task-name'>${$task}</h1> <img src='images/check 1.png' alt='Completar tarefa' onclick='taskName.handdleClick()' id='check-icon'> <img src='images/delete.svg' alt='Deletar tarefa' onclick='taskName.delete()' id='delete-icon'> </article> `; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Su problema comienza en la estructura de su código:

  • hay una función llamada TaskName que hace muchas cosas: crear HTML, deleting algo de algún lugar, manejar un evento de clic
  • usas el espacio de nombres global ( window ) para manejar las cosas

¿Qué necesitas si quieres una aplicación Todo ?

  • una lista de todos (probablemente una matriz)
  • una función para agregar un nuevo Todo a la lista de todos
  • una función para eliminar un elemento Todo de la lista de todos
  • una función que establece 1 elemento Todo como done (OK, generalmente alterna entre done y not done )

Aquí hay un fragmento que hace esto:

 // list of todos & list manipulation functions let todos = [] const addTodo = (newTodo, todos) => [...todos, newTodo] const removeTodo = (idToRemove, todos) => todos.filter(({ id }) => idToRemove != id) const toggleTodoDone = (idToToggle, todos) => todos.map(({ id, done, ...rest }) => id == idToToggle ? { id, done: !done, ...rest } : { id, done, ...rest }) const getTodoItem = (label) => ({ id: Date.now(), done: false, label, }) // DOM manipulation & event handling const input = document.getElementById("input-add-todo") const btnAdd = document.getElementById("btn-add-todo") const container = document.getElementById("container") const resetInput = () => input.value = '' btnAdd.addEventListener('click', function() { const label = input.value if (label) { const newTodo = getTodoItem(label) todos = addTodo(newTodo, todos) updateContainer(container, todos) resetInput() } }) const getTodoHtml = (todo) => { const doneClass = todo.done ? ' done' : '' return ` <div class="todo-item${doneClass}" data-id="${todo.id}" > ${todo.label} - ${todo.done} <button class="remove-todo" data-id="${todo.id}">X</button> </div> ` } const getTodoListHtml = (todos) => todos.map(getTodoHtml).join('') const registerEventHandlers = (container) => { const els = document.querySelectorAll('.todo-item') els.forEach(el => el.addEventListener('click', function() { const id = el.dataset.id todos = toggleTodoDone(id, todos) updateContainer(container, todos) })) const btns = document.querySelectorAll('.remove-todo') btns.forEach(btn => btn.addEventListener('click', function(e) { e.stopPropagation() const id = btn.dataset.id todos = removeTodo(id, todos) updateContainer(container, todos) })) } const updateContainer = (container, todos) => { container.innerHTML = getTodoListHtml(todos) registerEventHandlers(container) }
 .todo-item { cursor: pointer; } .todo-item.done { text-decoration: line-through; }
 <div> <input type="text" id="input-add-todo" /> <button id="btn-add-todo">ADD TODO</button> </div> <div id="container"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda