2010-01-23 5 views
0

J'ai cela dans la tête de mon document:javascript problème syntaxe

<script type="text/javascript"> 

      var myString= location.href; 
      var mySplit = myString.split("#"); 
      var x = mySplit[1]; 

      if (x == 'page1_div1') { 
       document.getElementById('div1').className = 'theNewClass'; 
      } 
</script> 

Quelle est mon erreur? Merci, Linda

+0

Quel est le problème? Est-ce que ça ne marche pas? Les résultats ne sont-ils pas ce que vous attendez? Avez-vous un message d'erreur? Est-ce que votre ordinateur fume? –

+0

La fenêtre d'erreur JavaScript ne vous dirait pas quelle est l'erreur? –

+0

> Quel est le problème? Est-ce que ça ne marche pas? Les résultats ne sont-ils pas ce que vous attendez? Je m'attends à ce que la classe de la div change et qu'elle ne change pas. Si c'est 'theOldClass' et que l'URL a le hash 'page1_div1' alors je veux changer la classe de la div en 'theNewClass'. J'ai supposé que j'avais une erreur de syntaxe depuis que je suis un débutant. – Linda

Répondre

0

Vous pouvez obtenir le hachage plus facilement à travers location.hash et puisque vous aurez probablement plusieurs divs, il est plus facile de les allumer. Exemple:

<script type="text/javascript"> 
    var myHash = location.hash || 'NO-HASH'; 

    switch (myHash) { 
    case 'NO-HASH': 
     // Original page - no hash. 
     document.getElementById('div1').className = 'theOldClass'; 
     document.getElementById('div2').className = 'theOldClass'; 
     break; 
    case '#page1_div1': 
     document.getElementById('div1').className = 'theNewClass'; 
     document.getElementById('div2').className = 'theOldClass'; 
     break; 
    case '#page1_div2': 
     document.getElementById('div1').className = 'theOldClass'; 
     document.getElementById('div2').className = 'theNewClass'; 
     break; 
    } 
</script> 

Cependant, si cela est lié à votre question de suivi de l'histoire, vous voulez exécuter ce code dans une minuterie de vote.

+0

> Si cela est lié à votre question de suivi de l'historique, vous devez exécuter ce code dans un minuteur d'interrogation. C'est un problème similaire mais pas le même. La première question était entre div sur la même page. Cette question concernait la navigation entre différentes pages. Sur le lien vers la première page, je mets un hachage qui ne se résout pas sur la page liée juste pour avoir un suivi entre les pages. Max, comment je vais vous embaucher pour résoudre mes problèmes de javascript :-) – Linda

3

Si vous avez ce code dans le head de votre document comme vous le dites, le problème est que document.getElementById n'est pas en mesure de trouver votre élément "div1", parce que quand il est exécuté, le body de votre document HASN « t été évaluée, essayez d'utiliser l'événement window.onload:

window.onload = function() { 
    var x = location.hash.substring(1); 

    if (x == 'page1_div1') { 
    document.getElementById('div1').className = 'theNewClass'; 
    } 
}; 

Notez que j'ai aussi simplifié votre code un peu, vous vouliez extraire la hash partie de l'URL actuelle.

+0

Parfait. Merci beaucoup pour l'explication pourquoi il ne trouvait pas div1. – Linda