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

148
Visualizações
Obtención del hijo del padre único de la casilla de verificación marcada en JavaScript (o hermano de la casilla de verificación marcada)

Estoy creando una aplicación de tareas pendientes en JavaScript vainilla.

Estoy almacenando la identificación y el valor de cada tarea pendiente en el almacenamiento local. Así como un valor booleano que especifica si la casilla de verificación correspondiente de la tarea pendiente se marcó o no.

Esto funciona perfectamente siempre que no se haya hecho clic en ninguna casilla de verificación.

Aquí hay un ejemplo de cómo se ve el almacenamiento local:

 "{\"toDo1630557891826\":\"Clean bedroom false\",\"toDo1630557898808\":\"Wash dishes false\"}"

Sin embargo, tan pronto como se marca una casilla de verificación, el valor más reciente en el árbol DOM se coloca junto a ambos identificadores de tareas en el almacenamiento local. Por ejemplo, cuando marco ambas casillas de verificación en el DOM.

Esto es lo que quiero decir -

 {ToDos: "{\"toDo1630557891826\":\"Wash dishes true\",\"toDo1630557898808\":\"Wash dishes true\"}", length: 1}

Creo que la razón por la que esto sucede es porque cuando estoy almacenando los valores de tareas pendientes verificados, solo estoy recuperando el último valor de tareas pendientes en el DOM:

 toDoContainer.addEventListener("change", (e) => { const tgt = e.target; const toDo = tgt.parentNode.querySelector('.input'); if (tgt.checked) { toDo.style.textDecoration = "line-through"; toDo.style.opacity = "50%"; isChecked(toDo.value); } else { toDo.style.textDecoration = "none"; toDo.style.opacity = "100%"; isChecked(toDo.value); } });

Esta línea de código específicamente está causando este problema:

 const toDo = tgt.parentNode.querySelector('.input');

Como dije antes, esto está obteniendo el último valor .input (todo). Necesito almacenar el valor correspondiente para cada casilla de verificación marcada sin sobrescribir otros valores de tareas pendientes en el almacenamiento local.

Por lo tanto, necesito almacenar de alguna manera el valor de cada tarea pendiente accediendo al hermano del valor de tarea pendiente de la casilla de verificación.

No estoy seguro de cómo hacer esto.

Aquí está mi codepen para más contexto. Por supuesto, no hay almacenamiento local.

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

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

0

Es probable que debas considerar esto:

 toDoContainer.addEventListener("change", (e) => { const tgt = e.target; const chk = tgt.checked; toDo.style.textDecoration = chk ? "line-through" : "none"; toDo.style.opacity = chk ? "50%" : "100%"; saveTodos() }); const saveToDos = () => { // change the global todo object (and make it an array) toDos = [...toDoContainer.querySelectorAll("input[type=checkbox]")].map(todo => { const checked = todo.checked const id = todo.closest("div").id; return { id,completed:checked } }); localStorage.setItem("ToDos", JSON.stringify(toDos)); };
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