Surligner mot dans un noeud du DOM HTML en JavaScript

Fermé
Theo_2059 Messages postés 37 Date d'inscription vendredi 5 juillet 2019 Statut Membre Dernière intervention 22 février 2023 - Modifié le 8 févr. 2022 à 21:59
Theo_2059 Messages postés 37 Date d'inscription vendredi 5 juillet 2019 Statut Membre Dernière intervention 22 février 2023 - 8 févr. 2022 à 21:10
Bonsoir,

J'essaie de faire une fonction JavaScript qui me surligne un mot ou une expression dans un document réalisé en HTML. Je dois donc parcourir les noeuds du DOM en js pour retrouver le noeud de texte qui contient un mot ou expression contenue dans un champ 'input'.
J'arrive à faire cette étape mais ensuite je n'arrive pas à surligner l'élément dans le document. Je dois remplacer l'élement de texte trouvé par une balise <span> et placer dans la balise le texte trouvé.

Voici où j'en suis actuellement : (c'est un peu brouillon dans la fonction vu que je fais des tests pour trouver une solution)

/**


* Fonction qui regarde si le contenu du champ input du formulaire est contenu dans une balise du document et surligne le mot/expression s'il est trouvé  * @param node   */
 function loop(node){  
var mon_input = document.getElementById('champRecherche').value; 
 if(node == document) {   if(compteurPassageSearch == 0)    sauvegarde = document.body;  
 else    document.body = sauvegarde;  
} 
 compteurPassageSearch++; 
 var nodes = node.childNodes;
  for (var i = 0; i <nodes.length; i++) {   
if((nodes[i].nodeType == Node.TEXT_NODE) && (nodes[i].nodeValue.search(mon_input) >= 0)) { 
   var newSpan = document.createElement('span');    newSpan.className = 'select';    
newSpan.innerText = nodes[i].nodeValue;     
   //nodes[i].parentNode.append(newSpan);     

   var motExpression = nodes[i].nodeValue.substring(nodes[i].nodeValue.search(mon_input), nodes[i].nodeValue.search(mon_input) + mon_input.length);    
    motExpression.backgroundColor = 'yellow';
   }   if(!nodes[i]){    continue;
   }  
 if(nodes[i].childNodes.length > 0){   
 loop(nodes[i]);
   } 
 } }


Voici une capture d'écran de l'énoncé d'origine :



Merci en tout cas et bonne soirée !
A voir également:

1 réponse

Theo_2059 Messages postés 37 Date d'inscription vendredi 5 juillet 2019 Statut Membre Dernière intervention 22 février 2023
8 févr. 2022 à 21:10
Désolé, le formattage s'est mal fait j'ai dû faire une erreur, voici une photo du code de la fonction :
0