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

173
Visualizações
Marcar una casilla de verificación y aplicar el estilo al valor de entrada correspondiente

Estoy creando una lista de tareas pendientes en JavaScript vainilla. En este momento, estoy tratando de aplicar un estilo a una tarea pendiente cuando la casilla de verificación correspondiente está marcada.

 toDoContainer.addEventListener("change", function(e) { const tgt = e.target; if (tgt.classList.contains("checkbox")) { let toDo = tgt.closest("input").classList.contains("input"); if (toDo.value !== "") { toDo.style.opacity = "50%"; } } });

Tal como está, nada está sucediendo visiblemente y no estoy recibiendo un error.

Estoy usando el método más cercano () porque la casilla de verificación y el todo son entradas que están una al lado de la otra en el DOM.

Antes estaba usando este código -

 allCheckboxes.forEach(box => { box.addEventListener("change", () => { if (box.checked) { for (let toDo = 0; toDo < allToDos.length; toDo++) { if (allToDos[toDo].value) { allToDos[toDo].style.textDecoration = "line-through"; allToDos[toDo].style.opacity = "50%"; } } } else { console.log("cat"); for (let toDo = 0; toDo < allToDos.length; toDo++) { if (allToDos[toDo].value) { allToDos[toDo].style.textDecoration = "none"; allToDos[toDo].style.opacity = "100%"; } } } }) })

Pude aplicar los estilos a las entradas, pero solo cuando se marcó la primera casilla de verificación en la lista de nodos. Al marcar la casilla de verificación, también se aplicaron los estilos a todos los todos en el DOM, no solo al correspondiente, que es lo que quiero.

Otra peculiaridad que acabo de notar es que cuando miro las herramientas de desarrollo para ver si está registrando las casillas de verificación, muestra una lista de nodos vacía: [] cuando hay varias casillas de verificación visibles.

 document.getElementById("add").addEventListener("click", () => { console.log(allCheckboxes); });

¿Cómo puedo aplicar estilo solo a la tarea pendiente correspondiente cuando una casilla de verificación está marcada?

*** EDITAR - https://codepen.io/harri-greeves/pen/LYLEKNj ***

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Estoy usando el método más cercano () porque la casilla de verificación y el todo son entradas que están una al lado de la otra en el DOM.

El método más cercano busca el elemento mismo y luego busca los ancestros del elemento, moviéndose hacia arriba en el árbol dom.

No creo que .closest se pueda usar para apuntar a hermanos.

https://api.jquery.com/más cercano/

about 4 years ago · Juan Pablo Isaza Relatório

0

El problema está en línea:

const allCheckboxes = toDoContainer.querySelectorAll("[type=checkbox]");

querySelector devuelve una colección html no viva. Significa que no incluirá todos agregados dinámicamente.

La mejor manera es escuchar el nodo principal: todoContainer y luego manipular el estado.

about 4 years ago · Juan Pablo Isaza Relatório

0

añadir esta función

 function ChangeOpacity() { let checkbox = document.getElementsByClassName("checkbox"); let input = document.getElementsByClassName("input"); for (let i = 0; i < checkbox.length; i++) { checkbox[i].addEventListener("change",()=>{ if (checkbox[i].checked == true) { if (input[i].value) { input[i].style.opacity = "50%" input[i].style.textDecoration = "line-through" } else{ input[i].style.opacity = "100%" input[i].style.textDecoration = "none" } } else { if (input[i].value) { input[i].style.opacity = "50%" input[i].style.textDecoration = "line-through" } else{ input[i].style.opacity = "100%" input[i].style.textDecoration = "none" } } }) } } ChangeOpacity()

y luego llame a esta función a la función createToDo , todo debería funcionar bien y es más limpio de esta manera

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