Surligner mot dans un noeud du DOM HTML en JavaScript
Theo_2059
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Theo_2059 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Theo_2059 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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)
Voici une capture d'écran de l'énoncé d'origine :

Merci en tout cas et bonne soirée !
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:
- Html surligner
- Editeur html - Télécharger - HTML
- Html br - Forum HTML
- Comment surligner sur pages ✓ - Forum Bureautique
- Surligner texte indesign ✓ - Forum InDesign
- Espace html - Astuces et Solutions