I am following a code to make a quiz. I am building a function to highlight one list item and add a class to it.
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')
})
The code is working but i do not understand the if condition from the source. Can someone help?
CodePudding user response:
if(answer.querySelector('.selected'))
statement is used to check whether there are any elements of answer
, which have the .selected
class
CodePudding user response:
answer.querySelector('.selected')
will return the element with .selected
class if it exists within the answer element.
If there is no .selected
class within the answer element, it will return null
.
In this code:
if(answer.querySelector('.selected')){
---
}else
option.classList.add('selected')
If the if
condition is null
that means there was no .selected
element found. So the else block gets executed and it adds a .selected
class to option.
But if there was a .selected
class inside the answer element, the if
condition would be truthy and would execute. Removing the .selected
class.