Estoy siguiendo un código para hacer una prueba. Estoy creando una función para resaltar un elemento de la lista y agregarle una clase.
function chooseAnswer(){ answer.querySelectorAll('li').forEach((option)=> { option.addEventListener('click',()=>{ if(answer.querySelector('.selected')){ let activeAnswer=answer.querySelector('.selected'); activeAnswer.classList.remove('selected') }else option.classList.add('selected') })El código funciona pero no entiendo la condición if de la fuente. ¿Alguien puede ayudar?
if(answer.querySelector('.selected')) se usa para verificar si hay algún elemento de answer , que tenga la clase .selected
answer.querySelector('.selected') devolverá el elemento con la clase .selected si existe dentro del elemento de respuesta.
Si no hay una clase .selected dentro del elemento de respuesta, devolverá un null .
En este código:
if(answer.querySelector('.selected')){ --- }else option.classList.add('selected') Si la condición if es null , significa que no se encontró ningún elemento .selected . Entonces, el bloque else se ejecuta y agrega una clase .selected a la opción.
Pero si hubiera una clase .selected dentro del elemento de respuesta, la condición if sería veraz y se ejecutaría. Eliminando la clase .selected .