1

2つの記事を含むWebページがあります。このページをロードすると、jQueryを使用して2つの記事が非表示になり、最初の記事が下にスライドします。ユーザーはナビゲーションタブをクリックして2番目の記事を表示できます。onhashchange次に、イベントを使用して戻るボタンをクリックして、最初の記事に戻ります。以下は私のHTMLコードです。

<nav>
 <a href='#1'>Article 1</a>
 <a href='#2'>Article 2</a>
</nav>

<article id=1>
 The first article.
</article>

<article id=2>
 The second article.
</article>

そしてここにjavascriptコードがあります:

function change(hash)
{
 $('article:visible').slideUp();
 if(hash != '')
 {
  $(hash).slideDown();
 }
 else
 {
  $('article').first().slideDown();
 }
}

$('nav a').click(function(){
 var id = $(this).attr('href');
 change(id);
});

$('article').hide();
change(location.hash);
window.onhashchange = change(location.hash);

観察されたのは、戻るボタンをクリックしてもページが2番目の記事に残っていることです。Firefox 12.0ブラウザを使用していますが、何が原因で動作しないのかわかりません。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

7

あなたは試してみたいかもしれません:

window.onhashchange = change;

//and read location.hash in the change function instead
function change(){
    var hash = location.hash;
    ...
}

また

window.onhashchange = function(){
    change(location.hash);
}

window.onhashchange = change(location.hash);

私のJSが錆びていなければ、これは失敗します。

  • 呼び出しchange()
  • リターンリターンのない関数undefined
  • あなたはに割り当てundefinedています-あなたはイベントwindow.onhashchangeに割り当てることになっているので、これは間違っています。function
于 2012-05-14T05:02:39.030 に答える