COLORISE LES MOTS D'UNE PAGE (APRES RECHERCHE)

Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- - Dernière réponse : takali
Messages postés
29
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
13 octobre 2008
- 2 juin 2005 à 18:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27562-colorise-les-mots-d-une-page-apres-recherche

takali
Messages postés
29
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
13 octobre 2008
-
Slt tous le monde, je trouve se script sympa

je voulais savoir si il été possible defectuer la même recherche avec plusieurs mots clés?

Et aussi si un tel script peu rechercher dans une ifram ?

Voila

J'espere avoir bientôt une reponse

En tous cas

bon boulot

Emilie
takali
Messages postés
29
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
13 octobre 2008
-
Slt tous le monde, je trouve se script sympa

je voulais savoir si il été possible defectuer la même recherche avec plusieurs mots clés?

Et aussi si un tel script peu rechercher dans une ?

Voila

J'espere avoir bientôt une reponse

En tous cas

bon boulot

Emilie
chimelpremier
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005
-
Voila ma version DHTML si ça intéresse qqun:
<html>
<head>
<style type="text/css">
.surligne
{
color: #C30;background-color: #ffa;
}
</style>
<title>Recherche</title>
<script type"text/javascript">
function recherche(chaine)
{
var i=posChaine=posTag=finTag=n=0;doc1=doc2=''
//doc1 : texte avant un tag
//doc2 : texte final
var doc = document.body.innerHTML
el=''+chaine+''
if(chaine=='')return
while(doc!='' && n<999)// n pour éviter la boucle infinie
{
posTag=doc.indexOf('<') //position d'un début de balise HTML
doc1=doc.substr(0,posTag) // bout de texte avant un tag
while(doc1.indexOf(chaine)!=-1 && i<99) //tant qu'on trouve une occurence de la chaine
{
posChaine=doc1.indexOf(chaine); // position occurence trouvée
doc2+=doc1.substr(0,posChaine)+el // texte avant occurence + élément ajouté
doc1=doc1.substr(posChaine+chaine.length,doc1.length) // doc1 restant
i++
}
doc2+=doc1 // on ajoute doc1 restant après la sortie de boucle
finTag=doc.indexOf('>')
doc2+=doc.substring(posTag,finTag+1) // ajoute le tag
doc=doc.substr(finTag+1,doc.length) //reste du texte
n++
}
document.body.innerHTML=doc2+doc // complète avec le reste de texte

document.getElementById('nbr').value=" "+i+" éléments trouvés";
document.getElementById('toto').value=""
}
</script>
</head>


Recherche de texte dans tout le document

<form name="form" method="post" action="index.html">
Rechercher :




</form>


un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script



Comment ça marche :


J'ai utilisé les méthodes indexOf() et substr() pour chercher les occurences de la chaine en évitant les tags HTML. Puis reconstruction de la page dans la variable doc2.



</html>
rttb
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008
-
tu crees un style dans la balise <HEAD> comme d'habitude :

<style type="text/css">
<!--
.Style1 {color: #CC3300;
background-color: #000066;
}
-->
</style>

puis a la place de
motrecherche.pasteHTML(""+chaine+"");

tu mets :
motrecherche.pasteHTML(''+chaine+'');

Tous les 'delires' des CSS applicables au texte sont possibles, la fonction reecris le code html, alors tu fais ce que tu veux..
theXman
Messages postés
37
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
11 mars 2006
-
j'essaie de remplacer la 'colorisation' du texte par une couleur de fond avec bgcolor. Mon problème est que j'utilise une table pour appliquer le bgcolor uniquement au mot recherché ce qui provoque des retours à la ligne dans mon texte final

une solution?

merci