2010-11-18 10 views
5

Ho una funzione che modifica l'hash nell'URL e inserisce/rimuove un div dalla mia pagina principale. L'ho fatto per poter avere una pagina che puoi manovrare senza ricaricare, ma allo stesso tempo volevo che le persone potessero aggiungere un segnalibro a una certa sezione e andare avanti in seguito senza dover passare nuovamente attraverso la pagina.if function with window.location.hash help

Quando provo a chiamare la mia funzione hash(), che chiude tutti i div e apre il div specifico a seconda dell'hash, non funziona. Probabilmente non ho la cosa giusta nelle dichiarazioni if, perché quando inserisco uno alert() nella funzione hash(), viene visualizzato come dovrebbe.

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

Sono consapevole del fatto che probabilmente ci sono modi migliori di fare tutto quello che ho detto, ma questo è l'unico sito che ho intenzione di essere fare, e non me ne può fregare di meno come disordinato lo script è in alla fine, finché funziona.

risposta

7

il motivo per cui non funziona è l'hash attuale (negli Stati Uniti credo si chiami una libbra) simbolo - # all'inizio del window.location.hash

Dalla memoria IE non mette il simbolo hash su di esso, in modo da fare questo:

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

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

si potrebbe anche prendere in considerazione solo chiamando InsertContent (hash), piuttosto che fare un if() per ogni collegamento diverso avrete

+0

grazie mille per la vostra aiuto, ha funzionato perfettamente. – pobrien