Med IE og Netscape 6 eller nyere kan det lade sig gøre, men det bliver et gevaldigt arbejde for man skal parse sig igennem hele sourcen for at forhindre at det bliver sat <span style="background:pink">..</span> rundt om det ord i siden på stedet hvor det er en del af et script eller en html-kommando.
eg: søgning på ordet 'orm': document.innerHTML = document.innerHTML.replace( /orm/gi, "<span style='background:pink'>orm</span>" ); simpelt nok. men hvis nu den side der er fundet indeholder er formular får vi:
et muligt alternativ kunne være at benytte find funktionen i java script:
<a href="" onclick="find( 'orm', false, false );return false;">søg forlæns efter 'orm' i denne side</a> <a href="" onclick="find( 'orm', false, true );return false;">søg baglæns efter 'orm' i denne side</a>
Der er (bør) ikke være noget formatering i teksten der skal "parses" så det er ikke noget problem
jeg har prøvet det du skrev, men får en fejl (jeg er IKKE javaskrift haj).
hvis du kan rette det så det dur ville jeg være rigtig glad (så kan jeg selv pille det helt færdigt)
:)
<html> <head> <title>markWord</title> <script language="javascript"> function markWord() { document.innerHTML = document.innerHTML.replace( /dolor/gi, "<span style='background:pink'>dolor</span>" ); } </script> </head> <body onload="markWord()"> <span name="a" id="a"> Lorem est a ipsum dolor sit amet, consectetuer adipiscing elit, sed diam amex nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim des ad minim veniam, quis nostrud exerci tation ullamcorper suscipit nfo lobortis nisl ut aliquip ex ea commodo consequat. </div> </body> </html>
gi fordi g -> global -> find alle forekomster, ikke kun den første i -> case Insensitive -> ikke se forskel på små og store bigstaver.
Ellers bar det mig der kvajede mig. sidens innerHTML ligger i document.body, ikke i document. så:
<head> <title>markWord</title> <script language="javascript"> function markWord() { document.body.innerHTML = document.body.innerHTML.replace( /dolor/gi, "<span style='background:pink'>dolor</span>" ); } </script> </head> <body onload="markWord()"> <span name="a" id="a"> Lorem est a ipsum dolor sit amet, consectetuer adipiscing elit, sed diam amex nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim des ad minim veniam, quis nostrud exerci tation ullamcorper suscipit nfo lobortis nisl ut aliquip ex ea commodo consequat. </span> </body> </html>
Du har altså et span indeni den body. prøv den med søgeordet 'pan'.
hvordan bruger man variabler i replace? function markWord2(theword) { document.body.innerHTML = document.body.innerHTML.replace( /theword/gi, "<span style='background:pink'>"+theword+"</span>" ); } dur (jo) ikke men, man kan vel bruge en variabel?
Ja det er rimelig nemt. alle tags bliver til et html-element der så har sin egen innerhtml:
<script language="javascript"> function markWord( id ) { if ( document.getElementById ) { var elm = document.getElementById( id ); } else if ( document.all ) { var elm = document.all[ id ]; } else { return; // sorry, NS4 er ikke med. } elm.innerHTML = elm.innerHTML.replace( /dolor/gi, "<span style='background:pink'>dolor</span>" ); }
den kaldes så med id-navnet på den span der skal substitueres i: <body onload="markWord( 'a' )">
function markWord2(id, theword) { if ( document.getElementById ) { var elm = document.getElementById( id ); } else if ( document.all ) { var elm = document.all[ id ]; } else { return; // sorry, NS4 er ikke med. } elm.innerHTML = elm.innerHTML.replace( new RegExp( theword, "gi" ), "<span style='background:pink'>"+theword+"</span>" ); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.