Avatar billede a1a1 Novice
24. juli 2002 - 15:40 Der er 16 kommentarer og
1 løsning

Marker ord i tekst

Hej jeg ville gerne kunne markere (ændre bagrunds farve eller noget) fx. et søgeord i en tekst på siden.

Men hvordan? (det SKAL være javascript)

det kunne fx. være her på eksperten (ord i svarne)

det skal ikke være på hele siden men kun noget udvalgt (class="something" ?), men det skal kunne gå over flere tabeller (flere indlæg)

ordet er forskelligt hver gang men det sendes fra "søgesiden" ala showtext.asp?s=javascript
og det kan så skrives ind i javascriptet med asp...

det skal kunne virke i IE 5.5+ og gerne i NS6.0+ og hvis muligt Opera også (nyeste version)

hvis i ikke helt forstår hvad jeg mener så spørg igen...:)
Avatar billede a1a1 Novice
25. juli 2002 - 17:06 #1
hmmm
Avatar billede a1a1 Novice
26. juli 2002 - 15:02 #2
hmmm
Avatar billede a1a1 Novice
27. juli 2002 - 18:05 #3
jijjjjeeee
Avatar billede a1a1 Novice
29. juli 2002 - 17:29 #4
nobody.....???
Avatar billede a1a1 Novice
30. juli 2002 - 13:47 #5
hrmph..
Avatar billede jakoba Nybegynder
30. juli 2002 - 15:04 #6
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:

<f<span style='background:pink'>orm</span> action=fil.asp ...

og det er ikke så smart.

mvh JakobA
Avatar billede jakoba Nybegynder
30. juli 2002 - 15:14 #7
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>

mvh JakobA
Avatar billede a1a1 Novice
30. juli 2002 - 15:20 #8
er der fejl i hvad eksperten viser /orm/gi ?

hvorfor gi?

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>
Avatar billede a1a1 Novice
30. juli 2002 - 15:30 #9
he he....

Jeg kunne ikke få find til at virke...(men når jeg læser i min bog står der også at det kun er i Netscape...

Men det skal jo virke i ie :)
Avatar billede jakoba Nybegynder
30. juli 2002 - 15:37 #10
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'.

mvh JakobA
Avatar billede jakoba Nybegynder
30. juli 2002 - 15:40 #11
Som den står ovenfor virker den for mig i IE4 og NS7. ( sålænge søgeordet er 'dolor' :-)
Avatar billede a1a1 Novice
30. juli 2002 - 15:47 #12
og det dur jo :)

er det muligt at begrænse det til et (eller flere) span's, hvis jeg fx. har 3 span a, b og a (igen). bliver det ikke markeret i b men kun i a

?

læg et svar så du kan få nogle pointer....:)
Avatar billede a1a1 Novice
30. juli 2002 - 15:58 #13
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?
Avatar billede jakoba Nybegynder
30. juli 2002 - 16:00 #14
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' )">

mvh JakobA
Avatar billede jakoba Nybegynder
30. juli 2002 - 16:10 #15
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>" );
}
Avatar billede a1a1 Novice
30. juli 2002 - 16:19 #16
:) jubiiiiii iii :)

tusinde tak..

det dur dog ikke på nr. 2 span (men det er jo nok fordi man ikke må kalde 2 for det samme navn / id...:) )

jeg har dog lavet et span rundt om "det hele" (tabel, mm.) og det virker fint...:)
Avatar billede a1a1 Novice
30. juli 2002 - 16:47 #17
Jakob jeg har oprettet et "tillægs" spm. hvis det er noget du kan svare på (det er det nok:) )

http://www.eksperten.dk/spm/241176
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester