tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
35
ZUGRIFFE
1629
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    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
     

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Am einfachsten würdest du das Textdokument als JavaScript einbinden und etwa so aufbauen

    Code javascript:
    1
    2
    3
    4
    5
    6
    
    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

    Code javascript:
    1
    2
    3
    4
    5
    
    var foobar = textfeld.value;
     
    if(foobar in index) {
        window.location = index[foobar];
    }
    Eli- bedankt sich. 

  3. #3
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    hi erstmal danke für die schnelle Antwort

    Irgendwie steh ich grad auf dem Schlauch:
    javascrip.js:
    Code javascript:
    1
    2
    3
    4
    5
    6
    
    var index =
    {
        "test": "http://www.google.de/",
        "Testeintrag2": "url2",
        "Testeintrag3": "url3"
    };
    die test.html:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    <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
     

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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-Code:
    <!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>
    Eli- bedankt sich. 

  5. #5
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    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
     

  6. #6
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    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
     

  7. #7
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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.
    Eli- bedankt sich. 

  8. #8
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    hi,
    danke nur was ist Whitespace?
     

  9. #9
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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.
    Eli- bedankt sich. 

  10. #10
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    hi also ich hab mal bissle rumprbiert:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    textfeld.onkeyup = function() {
                      var k = textfeld.value
                     (for(k in index) {
     
                     
                     if(k in index) {
                                     
                     }
                     }
                     )
                     
            };
    Ich habe mich am oberen Code orientiert
    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
     

  11. #11
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Dein Index ist ein Objekt. Also eine Liste von Schlüsseln und Werten (key/value). Und über alle Elemente kann man mit for...in iterieren.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    var index = {
        "a": "foo",
        "b": "bar"
    };
     
    for(var k in index) {
        //In "k" steht der Schlüssel drin. Z.B. "a". Und mit den eckigen Klammern kann man auf den Wert zugreifen, wenn man den Schlüssel kennt
        alert(index[k]);
    }

    Jetzt kannst du also die Eingabe (textfeld.value) mit "k" in der Schleife vergleichen und alle Treffer ausgeben.
    Eli- bedankt sich. 

  12. #12
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    hi, also so hab ichs mal gemacht.
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var index = {
        "a": "foo",
        "b": "bar"
    };
     
    textfeld.onkeyup = function() {
     
    for(var k in index) {
        //In "k" steht der Schlüssel drin. Z.B. "a". Und mit den eckigen Klammern kann man auf den Wert zugreifen, wenn man den Schlüssel kennt
        textfeld.value = (index[k]);
    }
    }
    Bloß 1. erscheint bei egal welchem Buchstaben nur "bar" im textfeld und 2. erscheint es halt im textfeld und nicht unter ihm, als auswahl, wie bei google.
    aber es kommt dem schon näher hoffe ich
     

  13. #13
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Du musst ja in der Schleife auch irgendwas sinnvolles machen. Im Moment setzt du immer nur den Wert des Textfeldes um, deshalb steht natürlich am Ende der letzte Wert des Index im Textfeld. Hier mal meine Lösung. Erweiterung von Post #4

    HTML-Code:
    <!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">
    	<p>
    		<ul id="suggestions"></ul>
    	</p>
    	
    	<script type="text/javascript" src="index.js"></script>
    	<script type="text/javascript">
    	/* <![CDATA[ */
    	var textfeld = document.getElementById("textfeld");
    	var button = document.getElementById("button");
    	var suggestions = document.getElementById("suggestions");
    	
    	button.onclick = function() {
    		var foobar = textfeld.value;
    		
    		if(foobar in index) {
    			window.location = index[foobar];
    		}
    	};
    	
    	//Bei jedem Tastendruck
    	textfeld.onkeyup = function() {
    		var foobar = textfeld.value;
    		var out = "";
    		
    		for(var k in index) {
    			//Fängt der Wert mit der Eingabe an?
    			if(k.indexOf(foobar) === 0) {
    				out += "<li>" + k + ": " + index[k] + "</li>";
    			}
    		}
    		
    		suggestions.innerHTML = out;
    	};
    	/* ]]> */
    	</script>
    </body>
    
    </html>
    Eli- bedankt sich. 

  14. #14
    Eli- Eli- ist offline Mitglied Bronze
    Registriert seit
    Feb 2011
    Beiträge
    40
    hi,
    danke.

    Also, wenn ich das jetzt sehe, ist es schon irgenwie einfach gewesen.

    Ich wollte nur jetzt noch versuchen, die Vorschläge zu verlinken, anstatt die Url anzuzeigen.
    hier mein Versuch:
    Code javascript:
    1
    2
    3
    4
    5
    6
    
    for(var k in index) {
                            //Fängt der Wert mit der Eingabe an?
                            if(k.indexOf(foobar) === 0) {
                            out += "<a href="index[k]"><li>" + k + ": " + index[k] + "<\li><\a>";
                            }
                    }
    Leider geht es so garnicht mehr. Aber index[k] ist doch im prinzip der Link, oder?

    EDIT:
    Kann man das noch so machen, dass es, wenn man nichts eintippt auch nichts anzeigt, weil wenn man jetzt was eintippt, und wieder löscht, kommt alles aus der Datenbank.
    Für einen Tipp wäre ich hilfreich.

    wenn du es dir mal anschauen möchtest:
    Demonwars.de/datenbank/

    danke
     

  15. #15
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Das wäre die Lösung (ungetestet), damit da nichts mehr da steht, wenn nichts im Suchfeld steht:
    Code Javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    textfeld.onkeyup = function() {
      var foobar = textfeld.value;
      var out = "";
      
      if(foobar != "") {
        for(var k in index) {
          //Fängt der Wert mit der Eingabe an?
          if(k.indexOf(foobar) === 0) {
            out += "<li>" + k + ": " + index[k] + "</li>";
          }
        }
        
      suggestions.innerHTML = out;
    };

    Zu deinem ersten Problem: Konkatenation von Zeichenketten wird in Javascript mit dem Plus als Konkatenationsoperator gelöst:
    Code Javascript:
    1
    2
    3
    4
    5
    6
    
    for(var k in index) {
      //Fängt der Wert mit der Eingabe an?
      if(k.indexOf(foobar) === 0) {
        out += "<a href=" + index[k] + "><li>" + k + ": " + foobar + "<\li><\a>";
      }
    }
    Eli- bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

Ähnliche Themen

  1. JBoss Scheduler wie Publizieren bitte bitte helfen
    Von tovbiwankenobi im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 4
    Letzter Beitrag: 19.04.11, 09:05
  2. Antworten: 2
    Letzter Beitrag: 08.07.07, 16:46
  3. Javascript Grafik als Checkbox Problem Bitte Helfen, sehr dringend
    Von bluecat_xp im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 18.07.06, 10:27
  4. Wer kann mir da BITTE BITTE helfen
    Von Lillymaus im Forum Photoshop
    Antworten: 13
    Letzter Beitrag: 04.01.05, 12:06
  5. Bitte bitte helfen: Einbinden unter Knoppix
    Von meilon im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 01.06.04, 14:04

Stichworte