Suchsystem mit Javascript - Bitte helfen

Eli-

Mitglied
hi,

Ich brauch so ein Suchsystem für meine Website.
Ich weiß leider nicht so genau wie das geht.
Ich habe auch kein PHP und MySql zur verfügung, also muss es mit JS gehen^^

erstmal, was ich genau machen möchte:

Auf einer Seite ist ein Suchfeld.
Dort tippt man was ein, z.B. "Testeintrag"
und dann wird man auf eine andere Seite weitergeleitet.
Ich weiß soviel, das dies mit einer If-then Struktur geht, was auch kein problem für mich wäre, doch da es recht viele Sucheinträge werden, würde der Code extrem lang werden.
Kann man jetzt diese Sucheinträge in einem externem Textdokument speichern?
Also das da in dem Textdokument steht:

If "Testeintrag" then go to url
If "Testeintrag2" then go to url2
If "Testeintrag3" then go to url3
...

oder so was.
das dann auf der Seite nur ein kleiner code ist, und der rest in einem externen Dokument

Hoffe ihr könnt mir helfen

schon mal danke

Lg
Dennis
 
Am einfachsten würdest du das Textdokument als JavaScript einbinden und etwa so aufbauen

Javascript:
var index =
{
    "Testeintrag1": "url1",
    "Testeintrag2": "url2",
    "Testeintrag3": "url3"
};

Jetzt bindest du das in deine Seite ein vor deinem eigentlichen Code. Und anstelle des if-else Konstruktes einfach sowas

Javascript:
var foobar = textfeld.value;

if(foobar in index) {
    window.location = index[foobar];
}
 
hi erstmal danke für die schnelle Antwort ;)

Irgendwie steh ich grad auf dem Schlauch:
javascrip.js:
Javascript:
var index =
{
    "test": "http://www.google.de/",
    "Testeintrag2": "url2",
    "Testeintrag3": "url3"
};
die test.html:
Code:
<head>

<script type="text/javascript" src="javascrip.js"></script>

</head>

<body>
<script type="text/javascript">
var foobar = textfeld.value;
 
if(foobar in index) {
    window.location = index[foobar];
}
</script>

<input type="text" name="textfeld">
<input type="submit" value="suchen">
</body>

es geht leider nicht.
Was mache ich falsch?
schon mal danke
 
Zuletzt bearbeitet von einem Moderator:
1. Wo kommt die Variable "textfeld" her? Da sollte eine Referenz auf ein Textfeld hin.
2. Dein Code wird ausgeführt, bevor das Textfeld und der Button überhaupt existieren.

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	
	<title>Suche</title>
</head>

<body>
	<input type="text" id="textfeld">
	<input type="button" value="suchen" id="button">
	
	<script type="text/javascript" src="index.js"></script>
	<script type="text/javascript">
	/* <![CDATA[ */
	var textfeld = document.getElementById("textfeld");
	var button = document.getElementById("button");
	
	button.onclick = function() {
		var foobar = textfeld.value;
		
		if(foobar in index) {
			window.location = index[foobar];
		}
	};
	/* ]]> */
	</script>
</body>

</html>
 
hi danke :)
Komisch. Ich hab son Buch zu JS da steht das so wie oben bei mir drin, mit den Variabeln und so.
Oder ich habs falsch verstanden.

Auf jeden Fall danke

Lg
Dennis
 
hi sry wenn ich nerv^^

ich habe noch eine frage:
kann man den code so erweitern, das er schon anfängt die datenbank zu durchsuchen, wenn man einen Buchstaben eintippt? Also im Prinzip wie bei Google ;)

Wäre echt cool, wenn ihr mir dabei noch helfen könntet

Schon mal danke und Lg
Dennis
 
Es gibt für das Textfeld ein Ereignis namens "keyup". Darauf solltest du reagieren und dann über alle Einträge im Index iterieren (for(k in index) {...}) und prüfen ob es damit beginnt.

Versuch es mal und wenn es nicht klappt, zeig mal her und wir helfen dir. Hab es in 14 Zeilen (mit Whitespace) eingebaut. Also schwer ist es nicht.
 
Damit sind Zeichen gemeint, die in der Regel nicht dargestellt werden (Leerzeichen, Tab, Zeilenumbruch). Ich wollte damit nur sagen, dass in den 14 Zeilen sogar Leerzeilen dabei sind (die man ja zur Formatierung verwendet), also wirklich nicht viel dahinter steckt. Zeilen zählen ist ja ohnehin so eine Sache, da man auch alles in eine Zeile schreiben könnte.

Edit: Ich meinte damit natürlich nicht die Programmiersprache "Whitespace" :-D. In meinem Post fehlt noch ein "s" hintendran.
 
hi also ich hab mal bissle rumprbiert:
Javascript:
textfeld.onkeyup = function() {
				  var k = textfeld.value
				 (for(k in index) {

				 
				 if(k in index) {
                                 
				 }
				 }
				 )
				 
		};
Ich habe mich am oberen Code orientiert :confused:
nach dem if(k in index) { weiß ich leider auch nict mehr weiter, sry.
Wär das for nich im klammern, wäre es glaub ich ein bisschen einfacher.
Is der Code komplett falsch, oder ist ein teil richtig *Hoffnung*

Schon mal danke
 
Zuletzt bearbeitet von einem Moderator:
Zurück