begin process at 2008 08 28 21:57:03
1 233 393 membres
485 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHER ET REMPLACER UN MOT DANS UN TEXTE


Information sur la source

Catégorie :Divers Classé sous : rechercher, remplacer, texte Niveau : Débutant Date de création : 25/10/2007 Date de mise à jour : 14/11/2007 19:24:10 Vu / téléchargé: 4 467 / 199

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Un script de recherche des mots d'un texte, sur la base d'une source trouvée sur ce site. Simplifié (débarassé de son formulaire) arrangé (alertes diverses) il a été doté d'une fonction de remplacement. La recherche tient compte de la casse des mots. Il est ici proposé prèt à l'emploi. 1 document en xhtml valide et 1 document js.

Source

  • function remplacer()
  • {
  • var j;
  • if (t1.value == "" || t2.value == "") alert('Choisissez un mot à chercher et/ou son remplaçant !');
  • else
  • {
  • aire.focus();
  • champ = aire.createTextRange();
  • for (j = 0; j <= a && (action = champ.findText(t1.value)) != false; j++)
  • {
  • champ.moveStart('character', 1);
  • champ.moveEnd('textedit');
  • }
  • if (action)
  • {
  • champ.moveStart('character', -1);
  • champ.findText(t1.value);
  • champ.select();
  • champ.scrollIntoView();
  • a++;
  • if (confirm('Voulez vous remplacer le mot ?'))
  • {
  • champ.text = t2.value;
  • document.execCommand('unselect');
  • a--;
  • b = 1;
  • }
  • }
  • else
  • {
  • if (a > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect'); return false;}}
  • if (b > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect');}}
  • else {alert('Le mot a remplacer n\'est pas dans le document !'); a = 0; b = 0;}
  • }
  • }
  • }
function remplacer()
{
 var j;
 if (t1.value == "" || t2.value == "") alert('Choisissez un mot à chercher et/ou son remplaçant !');
 else
 {
  aire.focus();
  champ = aire.createTextRange();
  for (j = 0; j <= a && (action = champ.findText(t1.value)) != false; j++) 
  {
   champ.moveStart('character', 1);
   champ.moveEnd('textedit');
  }
  if (action) 
  {
   champ.moveStart('character', -1);
   champ.findText(t1.value);
   champ.select();
   champ.scrollIntoView();
   a++;
   if (confirm('Voulez vous remplacer le mot ?'))
   {
    champ.text = t2.value;
    document.execCommand('unselect');
    a--;
    b = 1;
   }
  } 
  else
  {
   if (a > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect'); return false;}}
   if (b > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect');}}
   else {alert('Le mot a remplacer n\'est pas dans le document !'); a = 0; b = 0;}
  } 
 }
}
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

29 octobre 2007 11:17:49 :
Différences variables locales, variables globales. Attribut name et id.
29 octobre 2007 11:20:24 :
Différences variables locales, variables globales. Attributs name et id en doublons.
14 novembre 2007 19:24:11 :
Suite à la demende formulée par un fidèle du site, le script permet cette fois de tenir compte de la casse du texte recherché.
  • signaler à un administrateur
    Commentaire de XtremDuke le 25/10/2007 16:36:38

    Je rentre pas dans les détails mais tu as oublié de déclarer tes objets.

    var air = document.getElementById('air'); // par exemple...

  • signaler à un administrateur
    Commentaire de lgh le 26/10/2007 07:32:08

    Bonjour,
    Une précision afin de répondre à xtrem...
    Le code proposé ci-dessus n'est qu'un extrait de la source.
    Tout est dans le zip.
    LGH

  • signaler à un administrateur
    Commentaire de XtremDuke le 26/10/2007 13:28:25

    Je ne parlais pas de l'extrait mais bel et bien de ta source.
    Tu ne peux pas utiliser <body onload="aire.focus();"> si tu n'a pas définis "aire" au préalable. "air" est l'identifiant de ton objet, pas ton objet. Et c'est la même chose pour t1, t2 etc...

  • signaler à un administrateur
    Commentaire de lgh le 27/10/2007 14:36:17

    Bonjour xtrem...,
    Si, je peux utiliser aire sans l'avoir déclaré au préalable, de même pour t1 et t2. Ils ne sont que des valeurs des attributs id et name des éléments textarea et input dans le document html.
    (NB: Dans le doute j'ai feuilleté divers tutoriels y compris Introduction au javascript sur ce site et rien de ce que tu avances n'est précisé...).
    LGH

  • signaler à un administrateur
    Commentaire de snpier wolf le 29/10/2007 09:06:01

    bonjours,
    bon normalement je "fait" du c++, mais le javasript je trouve sa asser fort bravo pour ton code.
    A++

  • signaler à un administrateur
    Commentaire de roro06 le 29/10/2007 09:43:37 1/10

    Bonjour

    Il n'y a qu'IE qui accepte <body onload="aire.focus();"> sans avoir au préalable déclaré ton objet, comme le fait très justement remarquer XtremDuke. FFx renvoie comme messages d'erreur : "aire is not defined" et "t1 is not defined"

    Petit bug : la fonction "remplacer" ne marche pas après utilisation de "chercher"

  • signaler à un administrateur
    Commentaire de lgh le 29/10/2007 10:13:32

    Bonjour,

    Ce que je pense de Firefox ?
    Je ne sais que dire.
    LGH

  • signaler à un administrateur
    Commentaire de roro06 le 29/10/2007 10:54:30

    Bonjour

    C'était pas le but de mon commentaire, je ne vais pas entrer dans des trolls stupides et stériles, mais le développement javascript necessite de s'assurer du fonctionnement sur un maximum de plateformes possibles.

  • signaler à un administrateur
    Commentaire de lgh le 29/10/2007 11:44:19

    Bonjour roro,

    J'aimerais bien lire la référence sur laquelle tu t'appuis. Cela me serait bien utile.
    Mais en attendant, et même si firefox est un peu sensible, je me permes d'insister... Nulle part je n'ai rencontré d'obligation de "déclaration d'objet" dans le cas de figure qui nous préoccupe ici.
    A tout hazard, j'ai repris la source en doublant les attributs des balises d'input et de textarea (xhtml transitional) et j'ai fait la différence entre les variables du script mais je ne vois pas ce que je peux faire de plus.
    LGH  

  • signaler à un administrateur
    Commentaire de XtremDuke le 29/10/2007 17:14:36

    As-tu testé ta source sous Safari ?

  • signaler à un administrateur
    Commentaire de lgh le 30/10/2007 11:26:18

    Bonjour,
    Je viens de vérifier le fonctionnement de la source sur firefox.
    1/ Celui-ci ne demande pas de déclaration mais un formulaire pour fonctionner (or le xhtml ne le rend plus obligatoire...).
    2/ Celui-ci ne reconnait semble-il pas les méthodes DHTML employées telles "objet.createTextRange()".
    Celles-ci serait sauf erreur ou omission donc, exclusives IE.
    Safari?

    LGH

    PS: A qui dois-je cette note encourageante, curieuse application de la charte!

  • signaler à un administrateur
    Commentaire de lgh le 31/10/2007 10:53:51

    Bonjour,
    Suite et fin pour cette source...
    Essai avec opéra 9.22.
    La boucle (for...) ne fonctionne pas.
    L'absence de formulaire dans le document principal n'est par contre (et par rapport à firefox) pas génante.
    Conclusion, méthodes de recherche par traitement d'un TextRange, IE strictement (?).

    LGH

  • signaler à un administrateur
    Commentaire de Fwdavy le 05/11/2007 16:08:46

    Ca ne remplace même pas tus les mots mais juste le premier qui est trouvé...puis ca ne controle pas le mot minuscule / majuscule. Puis la compatibilité avec les autres navgateur est importante, on parle d'une technologie Web pas d'une appli en local -_-

  • signaler à un administrateur
    Commentaire de Fwdavy le 05/11/2007 16:42:22

    Il y'avais plus simple et mieux a faire :

    <script>
    function chercheRemplace( text, stringToFind, stringRemplacement, champDeSortie )
    {
    var text = text.toString() ;
    var maReg = new RegExp( stringToFind, "gi") ;
    var resultat = text.replace( maReg, stringRemplacement ) ;

    if ( text.search( maReg ) == -1 )
    alert ( "Désolé le mot " + stringToFind.toUpperCase(stringToFind) + " n\'pas été trouvé" ) ;
    else
    champDeSortie.value = resultat ;
    }
    </script>
    <form>
    <textarea name="aireDeTexte" cols="75" rows="7">Saisissez ici votre texte</textarea>
    <br><br> Rechercher : <input type="text" name="motAChercher">
    <br><br> Remplacer par: <input type="text" name="motDeRemplacement">
    <br><br>
    <input type="button" value="Rechercher et Remplacer" onClick="chercheRemplace( this.form.aireDeTexte.value, this.form.motAChercher.value, this.form.motDeRemplacement.value, this.form.aireDeTexte )">
    </form>

  • signaler à un administrateur
    Commentaire de malalam le 07/11/2007 00:42:03 administrateur CS

    Hello,

    @LGH => IE n'est pas très réputé pour son support inconditionnel des standards. Enfin si, des standards microsoft ;-)
    Bref, attaquer, comme tu le fais, le DOM directement via la valeur de l'attribut name d'un élément html n'est pas du DOM. Le DOM est strict...et IE trop permissif. Il n'y a guère qu'IE qui acceptera ce code car la plupart des autres navigateurs récents suivent beaucoup mieux le Document Object Model.
    Quant à createTextRange, c'est effectivement, encore une fois, une spécificité IE, et uniquement IE. Il y a d'autres moyens de faire, en respectant le DOM, ceci dit. Même si IE propose des spécificités bien pratiques, c'est vrai. Mais comme le soulignent tes petits camarades de commentaire, le web, c'est vaste, et il vaut mieux faire en sorte de s'adapter aux utilisateurs, plutôt que de les forcer à utiliser des outils qu'ils n'ont pas envie d'utiliser. Faut bien respecter les minorités :-)

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS