Suche nach Schlüsselbegriffen

derfabse

Grünschnabel
Hallohallo, mag sein dass ich bei meiner Suche im Board passendes Suchresultat übersehen hab, daher tut's mir leid wenn die Frage schonmal beantwortet wurde und ich nochmal frag'... (Sollte heißen: Hab gesucht aber nix gefunden)

Also, hier das Problem: Wie realisiere ich eine Suchfunktion (Einfach ein Feld zum Begriff eingeben & einen Button) die nach Schlüsselbegriffen sucht, die ich zuvor festgelegt habe?
Ich denk mal da bin ich hier im Javascript-Thread ganz richtig wenn ich das nicht mit php machen will, oder? Hat jemand ne Idee?
 
Hi,

das kommt darauf an, wo und was gesucht werden soll: Hardcodierte Texte auf Deiner Seite, Dateien auf dem Server, eine Datenbank, das Web? Mit JavaScript kannst Du auf keine Dateien zugreifen; höchstens (bekannnte) Seiten öffnen und teilweise die Inhalte auslesen. Für die meisten Suchfunktionen wirst Du um Serverseitige Sprachen nicht herumkommen.

Gruß
.
 
Ok, ich erklär das mal ebens chnell: Das is so ne Art FAQ, also ne Lange Liste voller Fragen und den Antworten dazu; ich will am Seitenanfang ne suchfunktion einbaun, welche quasi die Frage & Antwort anzeigt (Am besten zur Frage Springt per Anker) wenn man nach einem Wort aus der Frage sucht...
(Hoffe das war verständlich formuliert)
 
Hmm, dann würde ich mir wahrscheinlich zwei Arrays anlegen; eines mit den Namen der Anker und eines mit Suchbegriffen: Vergleiche Deine Eingabe mit diesem Array und springe zu dem entsprechenden Anker... ich weiß, keine sehr elegante oder vielseitige Methode, sollte aber für den Anfang funktionieren.

Gruß
.
 
z.B. so:
HTML:
<script language="JavaScript" type="text/javascript">
var keys = new Array("Kaffee Bier Milch Getränke", "Nudeln Fleisch Pommes Speisen", "Persil Somar Pril Reinigung Waschen", "AS JavaScript PHP Lingo Scriptsprachen");

function searchFor() {
    var str = document.getElementById("suchfeld").value;
    for (var i=0; i<keys.length; i++) {
        if (str.toLowerCase().indexOf(keys[i].toLowerCase()) >= 0  || keys[i].toLowerCase().indexOf(str.toLowerCase()) >= 0) {
            alert("found: "+keys[i]);
            window.location = "#anchor" + i;
            break;
        }
    }
}
</script>
<body>
<p>
  <input name="suchfeld" type="text" id="suchfeld">
  <input name="button1" type="button" id="button1" value="Suchen" onClick="searchFor()">
</p>
<p><a name="anchor0"></a> Kaffe, Bier, Milch,<br>
Getr&auml;nke<br>
</p>
<p><a name="anchor1"></a> Nudeln, Fleisch, Pommes,<br>
Speisen<br>
</p>
<p><a name="anchor2"></a> Persil, Somat, Pril<br>
Reinigung, Waschen<br>
</p>
<p><a name="anchor3"></a> AS, JavaScript, PHP, Lingo<br>
Scriptsprachen<br>
</p>
</body>
... ist aber ne Doofmannslösung, ich weiß (mit RegEx gings sicher besser, aber ich weiß grade nicht mehr, ob es die in JS gibt :-( )

Gruß

.
 
RegExp gibts auch in Javascript :)

Andere Variante:
das Skript geht die Anker durch, und liest den Text darin aus.... das spart dir die Arbeit mit den Arrays:


Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function suchen(strIn)
{
    //wiederholte Leerzeichen entfernen
    strIn.replace(/\s+/g,' ');
    
    //Anker durchgehen
    for(j=0;j<document.anchors.length;++j)
        {
        //Ankerinhalt in Variable speichern
        strTxt=document.anchors[j].innerHTML;
        
        //Tags entfernen
        strTxt=strTxt.replace(/<[^>]*>/g,' ');
        
        //wiederholte Leerzeichen entfernen
        strTxt=strTxt.replace(/\s+/g,' ');
        
        //Suchen
        if(strTxt.match(new RegExp(strIn,'i')))
            {
            //Wenn gefunden, zum Anker springen
            window.location='#'+document.anchors[j].name;
            break;
            }
        }
return false;
}
//-->
</script>
</head>
<body>

<center>
    <form onsubmit="return suchen(this.elements[0].value)"name="bla">
        <input type="text"size="20">
    </form>
</center>

<p>
    <a name="anchor0">
        <u>Getränke</u><br>
        <i>Kaffee, Bier, Milch</i>
    </a><br>
</p>
<p>
    <a name="anchor1">
        <u>Speisen</u><br>
        <i>Nudeln, Fleisch, Pommes</i>
    </a><br>
</p>
<p>
    <a name="anchor2">
        <u>Reinigung, Waschen</u><br>
        <i>Persil, Somat, Pril</i>
    </a><br>
</p>
<p>
    <a name="anchor4">
        <u>Scriptsprachen</u><br>
        <i> AS, JavaScript, PHP, Lingo</i>
    </a><br>
</p>
</body>
</html>

Test
 
RegExp gibts auch in Javascript
Gemeinheit :) da frag ich mich, warum es in AS keine gibt (oder bin ich die ganze Zeit zu doof zum Suchen gewesen?).

Übrigens: innerHTML bei Ankern ist schon gewitzt, aber geht das nich nur im InternetExplorer?

Gruß
.
 
Zurück