2010-11-18 5 views
5

Ich habe eine Funktion, die den Hash in der URL ändert und ein Div von meiner Hauptseite einfügt/entfernt. Ich wollte, dass ich eine Seite haben kann, die man ohne Neuladen manövrieren kann, aber gleichzeitig wollte ich, dass die Leute einen bestimmten Abschnitt markieren und später darauf zugreifen können, ohne die Seite erneut durchgehen zu müssen.Wenn Funktion mit window.location.hash Hilfe

Wenn ich versuche, meine Funktion aufzurufen, die alle divs schließt und das spezifische div in Abhängigkeit vom Hash öffnet, funktioniert es nicht. Ich habe wahrscheinlich nicht das Richtige in den if Aussagen, denn wenn ich eine alert() in die Funktion, erscheint es wie seine angeblich.

function hash(){ 
    if (window.location.hash == "dcontact") { 
     removedivs(); 
     InsertContent('dcontact'); 
    } 
    if (window.location.hash == "dhome") { 
     removedivs(); 
     InsertContent('dhome'); 
    } 
} 
hash(); 

Ich bin mir bewusst, dass es wahrscheinlich bessere Möglichkeiten, alles zu tun, ich erwähnte, aber dies ist die einzige Website, die ich zu machen werde, und ich konnte nicht wurscht wie chaotisch das Skript ist in das Ende, solange es funktioniert.

Antwort

7

der Grund, warum es nicht funktioniert, ist die tatsächliche Hash (in den USA Ich glaube, Sie nennen es ein Pfund) Symbol - nicht setzen # am Anfang window.location.hash

Aus dem Gedächtnis IE nicht der Hash-Symbol auf, dies so tun:

function hash() { 
    var hash = window.location.hash.replace('#',''); 

    if (hash == "dcontact"){removedivs(); InsertContent('dcontact');} 
    if (hash == "dhome"){removedivs(); InsertContent('dhome');} 
} 

Sie auch eher nur anrufen InsertContent (Hash) in Erwägung ziehen könnte als ein if() für jeden anderen Link tun werden Sie

+0

Vielen dank haben für Ihre Hilfe, es hat perfekt funktioniert. – pobrien