I'm trying to make a search for FAQ page that will hide the results that dont have the keywords that user typed in. Right now the search is only highlighting the keywords and I assigned divs for each question with the class "faq-question". So I'm trying to loop through each div with class "faq-question", detect if the keyword that user searched is there (those keywords assigned tag "mark") and then change the background of this section if div="faq-question" contains the <mark>
tag inside. My code right now is highlighting ALL the divs="faq-question" instead of those that have <mark>
inside. How would I fix this?
HTML
<input type="text" id="keywords" placeholder="Search on the page..."></input>
<div class="faq-question"><h4>What is Lorem Ipsum?</h4>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.<p></div>
<div class="faq-question"><h4>Why do we use it?</h4>
<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</p></div>
Javascript:
//Hide unrelated search results
var questions = document.getElementsByClassName("faq-question");
var keyword = document.querySelector("mark");
for(x = 0; x < question.length; x++) {
if(typeof(keyword) != 'undefined' && keyword != null){
question[x].style.backgroundColor = "#FFFF00";
console.log("shown");
} else {
question[x].style.backgroundColor = "#FFFFFF";
console.log("hidden");
}
}
Edit: the <mark>
tag is a dynamic value. The question is about loop, but just to be clear: for example you type in "lorem" in the <input id="keywords">
. Then the html will change to
<h4>What is <mark>Lorem</mark> Ipsum?</h4>
...And so on. So I only use <mark>
tag in this case to detect if div has the keywords that match to whatever user was searching for
Comments
Post a Comment