-1

誰かがアンカーリンクにアクセスしたときに、次のようなスクロールアニメーションを作成しようとしています。

www.miweb.com/section/#anchorLink

そして、私はこのコードでそれを行っていますが、ユーザーがアンカーIDなしでURLにアクセスした場合、それ以降は何も実行できないため(この場合はalert( "the end"))、何か問題があります。

$('html, body').animate({
    scrollTop:$('[name="'+window.location.hash.replace("#", "")+'"]').offset().top
}, 500);

alert("the end");

ユーザーがアンカーIDを持つURLからアクセスすると、実行されます。

いずれにせよ、この関数の後にコードを実行するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

アニメーションのにコードを実行する場合は、次のようにします。

$('html, body').animate({
    scrollTop:$('[name="'+window.location.hash.replace("#", "")+'"]').offset().top
}, 500, function() {
    alert("the end");
});

更新
OPのコメントの後、offset()がnullの場合(アンカーがない場合)にtopプロパティにアクセスするときにjavascriptエラーが発生していると思います。そのため、次のように、null参照の可能性にアクセスしないように保護します。

dest = $('[name="'+window.location.hash.replace("#", "")+'"]').offset();
dtop = dest != null ? dest.top : null;
$('html, body').animate({
    scrollTop: dtop
}, 500);

alert("the end");​

これで、正常にalert()印刷されるはずです。

ブラウザのjavascriptコンソールを見ると、将来このような同様のエラーを簡単に見つけることができます。私はそうして、null参照に関するエラーを確認しました。

于 2012-10-04T13:43:18.530 に答える