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

Suche in Offline Seite einfügen

martin_7991

Neues Mitglied
Hallo,

ich habe aus Excel eine .htm-Datei erstellt, die mehrere Tabellen hatte bzw. jetzt aus mehreren Sheets besteht.

In diese Datei - die nur offline(!) benutzt wird - möchte ich ein Suchfeld einfügen, in welchem der Text sämtlicher Sheets
durchsucht wird.

Wie kann ich das realisieren?


Danke im Voraus
 
Das ist nicht halb so einfach, wie es sich anhört. Sich mit reimem HTML eine funktionstüchtige Suchfunktion zusammenzubauen geht vorweg gesagt schon mal nicht, wüsste auf jeden Fall nicht wie. Normalerweise macht man sowas mit einer Serverbasierten Programmiersprache wie PHP, welche man mit einem Compiler selbstverstänsdlich auch offline ausführen kann. Jedoch wäre das erstens mal sehr viel Arbeit und zweitens mal nicht sehr elegant umgesetzt, da die Suche nur auf diesem einen PC funktionieren würde, bzw. auch noch auf jedem anderen, auf dem der Interpreter ebenfalls installiert ist, was nicht gerade sehr viele sind (ist eben Server-Sache).

Mein Tipp an dich: Verzichte auf die Suchfunktion, das ist die Mühe nicht Wert. Wenn sie jedoch unerlässlich ist, dann könnten bereits existierende Open-source Suchmaschnienen, welche selbst konfigurierbar sind, das richtige für dich sein. Ich würde jedoch die Finger davon lassen.
 
Naja, eigentlich geht es. Du brauchst eben ein wenig JS, und du musst die ganzen Seiten in das JS schreiben.
Beispiel(Sieht schlecht aus, kann man aber mit HTML aufpeppeln):
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Titel</title>
        <script>
            // Erster Wert: Seite, Zweiter Wert: Name, Dritter Wert: Beschreibung
            // Hier Suchergebnisse generieren/manuell eintragen.
            var seiten = [
                ["www.google.de","Google","Suchen ist dein Freund"],
                ["www.microsoft.de","Microsoft","Wuerg."],
                ["www.html.de","html.de","Danke fuer die Hilfe"],
                ["www.linux.org","Linux","Gute Sache, Open Source"],
                ["www.blender.org","Blender3d","COOOOOL!"]
            ]
            //Ab hier nichts ändern(Suchroutine)
            function contains(x,y) {
                var i;
                for(var j=0;j<x.length;j++) {
                    i = x[j];
                    if(i==y) return true;
                }
                return false;
            }
            function search() {
                var suche = document.getElementById("in").value;
                var out = [];
                var f = [];
                var r = "";
                for(var i=0;i<seiten.length;i++) {
                    if(seiten[i][0].indexOf(suche)>-1) {
                        out.push(seiten[i]);//falls nach der URL gesucht wird
                    }
                    if(seiten[i][1].indexOf(suche)>-1) {
                        out.push(seiten[i]);//falls nach Name gesucht wird
                    }
                    if(seiten[i][2].indexOf(suche)>-1) {
                        out.push(seiten[i]);//falls nach Beschreibung gesucht wird
                    }
                }
                for(var j=0;j<out.length;j++) {
                    i = out[j];
                    if(!contains(f,i)) {//um doppelte Ergebnisse zu verhindern
                        f.push(i)
                        r+="<tr onclick=\"location.href='http://"+i[0]+"';\"><td>"+i[1]+" <i>von "+i[0]+"</i></td><td>"+i[2]+"</td></tr>";//Neue Zeile in der Tabelle
                    }
                }
                document.getElementById("out").innerHTML = r;
            }
        </script>
    </head>
    <body>
        <input type="text" id="in">&nbsp;<button onclick="search();">Suchen</button><br />
        <table id="out">
            <tr>
                <td>Bitte klicke erst auf suchen.</td>
                <td></td>
            </tr>
        </table>
    </body>
</html>

Ich hoffe es hat geholfen.
 
Und falls du möchtest, das es wie bei google beim eintippen schon Ergebnisse zeigt, rufst du die search-Funktion alle 250Millisekunden oder so auf, oder du machst es mit onchange.
 
Zurück
Oben