0

こんにちは私はアンカーを使用してナビゲートするページを持っています。ロード時に、インデックスページ(A)はアンカーにジャンプする必要があります。ファインロード機能でこれを行うことができますが、ページBIからページAに戻ると、別のアンカーにジャンプしたいと思います。私はこれを機能させています:

    <!-- go to Anchor -->
    <script type="text/javascript">

    function goToAnchor() {
    var urllocation = location.href;
    if(urllocation.indexOf("#top") > -1){
        window.location.hash="top";
    } else {
    window.location.hash="middle";
    }
}
    </script>

#middleアンカーを含まないリンクから(またはURLバーにアドレスを入力して)アクセスするときに使用するアンカーです。さらに3つの「if」を追加したいと思います。私はjsでかなり新しいので、愚かなことをしている場合は我慢してください。私はこれを試しました:

function goToAnchor() {
    var urllocation = location.href;        
if(urllocation.indexOf("#right") > -1){
        window.location.hash="right"; 
    } else {
    window.location.hash="middle";
    }
    if(urllocation.indexOf("#bottom") > -1){
        window.location.hash="bottom"; 
    } else {
    window.location.hash="middle";
    }
    if(urllocation.indexOf("#left") > -1){
        window.location.hash="left"; 
    } else {
    window.location.hash="middle";
    }

しかし、喜びではありません。jsが壊れて、ページの読み込み時に#middleに移動しなくなります。

ワイルドカードアプローチを試しました:

function goToAnchor() {
var urllocation = location.href;
if(urllocation.indexOf("#.") > -1){
    window.location.hash=".";
} else {
window.location.hash="middle";
}

}

繰り返しますが、喜びはありません。

助けてください..親切に感謝します

4

2 に答える 2

1

URLのハッシュに戻りたいだけの場合は、このようなことを試しましたか?

var hash = window.location.hash || "middle"; //Get current hash or default to "middle" if no hash is currently set
window.location.hash = +new Date() + ""; //Remove the hash and set it to some random value
window.location.hash = hash; //Set to the old hash
于 2012-04-10T14:30:17.513 に答える
1

あなたが達成しようとしている効果を理解しているのかよくわかりませんが(window.location.hashURLのハッシュ部分がすでに含まれているはずなので)、コードはおそらく

function goToAnchor() {
    var urllocation = location.href;        
    if (urllocation.indexOf("#right") > -1) {
        window.location.hash = "right"; 
    } else if (urllocation.indexOf("#bottom") > -1) {
        window.location.hash = "bottom";
    } else if(urllocation.indexOf("#left") > -1) {
        window.location.hash = "left";
    } else {
        window.location.hash = "middle";
    }
}

また、「ワイルドカード」アプローチは正規表現を使用することを意図していると思います。

function goToAnchor() {
    var urllocation = location.href;
    var hashMatch = urllocation.match(/#(.*)/)
    if (hashMatch){
        window.location.hash = hashMatch[1];
    } else {
        window.location.hash = "middle";
    }
}

window.location.hash繰り返しになりますが、割り当ての前後で同じ値になる可能性があるため、このコードがどのような効果をもたらすかはよくわかりません。

于 2012-04-10T14:49:54.040 に答える