• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

such funktion auf der seite

Status
Für weitere Antworten geschlossen.

ben

Mitglied
hallo zusammen
ich habe mir eine kleine suchmaschiene gebastelt ist zwar relativ einfach und sucht nur nach genau den begriffen aber das reicht fur meine zwecke
das ist der code (obere ende abgeschnitten)
Code:
function finden() {

// wort das gefunden werden soll
var object = (document.such.suchen.value);

// der text der seite
var suche = (document.getElementById("hintergrund").innerHTML);

// such funktion
var ergebnis = suche.search(object);
// speichert die position des gefundenen wortes buchstaben etc
(document.such.speich.value) = ergebnis;

if((ergebnis) != -1) {
        alert('Gefunden');
// nimmt die positon aus dem feld und es kommen die ersten 5 bzw wenn ein buchstabe eingegeben wurde dieser buchstabe + die nachsten 4 aus dem text
var gefunden = (suche.substr(document.such.speich.value,5));
alert(gefunden);
// macht die box gelb
document.such.speich.style.backgroundColor = "#ffff00"; 
    }else {
        alert('nicht gefunden');
        
    }
}


</script>
</head>
<body id="hintergrund">

<form name="such">
<input type="text" name="speich" size="15" />
<input type="text" name="suchen" size="15" />
<input type="button" value="Suche" onclick="finden();"><br />
<input type="reset" value="Reset" />
</form><br />
<h1>blabla</h1>
<p>........</p></body></html>
wenn man in die box suchen jetzt z.B. bla eingibt sagt der mir gefunden und wenn ich hallo eingebe sagt der mir nicht gefunden so wie es sein soll

so und jetzt mein problem / frage ich moechte das der den suchbegriff also das wort in dem text mit einem gelben hintergrund markieren

so markiert der die box was muss ich andern damit der das wort in dem text makiert??
und in der suchfunktion zeigt der nur den ersten gefundenen begriff nicht die anderen

schon mal vielen dank im voraus
 
Da hastst du dir was vorgenommen :D Hoffe das ist nur zum antesten, denn jeder neuere Browser hat eine Suchfunktion, in der die Wörter auch hervorgehoben werden.

Zu deinem Problem:

Vorerst ist es ja keine optimale Lösung von dem gesuchten Begriff 5 Zeichen ausgeben zu lassen. Bei Strings gibt es das Attribut length. In deinem Fall
Code:
alert(suche.length);

Das sollte dir die Länge des Suchbegriffes zurück geben.
somit kannst du deinen substring damit machen. trotzdem nicht die optimale Lösung.
Denn so kannst du den hintergrund auch nicht ersetzen.

Du musst mit replace arbeiten. Das sollte jedoch nicht al zu leicht sein bei variablen Suchbegriffen. hier mal ein Link zum Replace

JavaScript replace() Method

Die Sache ist, dass du nur über einen regulären Ausdruck an alle variablen rankommst (Was bei dir leider schon mal wegfällt)
Somit musst du noch mit indexof und substr arbeiten.
Heisst folgendes. Du hast zum Beispiel den folgenden Text.

"Da sitzt ein kleiner Hase. Da geh ich mal hin"

Und du willst die "Da"s hervorheben. Dann musst du folgendermaßen vorgehen.

- Suche nach Da
- schneide den Text nach dem "Da" ab (also beim ersten Fall wäre es: "Da" und "sitzt ein kleiner Hase. Da geh ich mal hin")
- Länge des Strings merken damit die Position ermittelt werden kann
- "Da" durch zum beispiel "<span class='gesucht'>Da</span>" ersetzen.
- An Neuen String anhängen.
- Länge des Strings zu Position addieren
- Wieder mit indexOf nach neuen Vorkommnissen suchen ab der position wo man aufgehört hat und der Kreislauf beginnt von vorne :P

Hoffe das war ein denkanstoß ^^
 
danke das ist ein guter denkanstoss ich werde dran arbeiten
ich hab mir alles was ich in javascript kann selber beigebracht und spiel damit so ein bisschen rum und ich weis das die browser eine suchfunktion haben aber ich moechte das in ein schulproject einbauen als kleines extra

Code:
alert(suche.length);
gibt bei mir die anzahl der zeichen in dem p tag wieder

das mit dem da ersetzen hort sich kompliziert an aber ich werde mich mit beschaftigen und es hoffendlich hinkriegen

danke
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben