2010-11-18 5 views
5

J'ai une fonction qui change le hash dans l'url et insère/supprime un div de ma page principale. Je l'ai fait de sorte que je puisse avoir une page que vous pouvez manoeuvrer sans recharger, mais en même temps je voulais que les gens puissent mettre en signet une certaine section et y aller plus tard sans avoir à passer par la page à nouveau.si fonction avec window.location.hash help

Lorsque j'essaie d'appeler ma fonction hash(), qui ferme toutes les divs et ouvre le div spécifique en fonction du hachage, cela ne fonctionne pas. Je n'ai probablement pas la bonne chose dans les déclarations if, parce que quand je mets un alert() dans la fonction hash(), il apparaît comme il est censé le faire.

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

Je suis conscient qu'il ya probablement de meilleures façons de faire tout ce que je l'ai mentionné, mais est le seul site que je vais être faire, et je me fiche pas mal comment désordre le script est en la fin, tant que cela fonctionne.

Répondre

7

la raison pour laquelle il ne fonctionne pas est le hachage réelle (aux Etats-Unis, je pense que vous appelez une livre) symbole - # au début de window.location.hash

De mémoire IE ne met pas le symbole de hachage, donc faire:

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

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

vous pouvez aussi envisager de simplement appeler InsertContent (hachage) plutôt que de faire un si() pour chaque lien différent, vous aurez

+0

merci beaucoup pour votre aider, cela a fonctionné parfaitement. – pobrien