1

私は JS の初心者であり、次の 2 つの if ステートメント条件の違いを知ることは非常に役立ちます...

最初の条件 (実際には機能していません):

if ( window.location.pathname == '/#register' ) {

// Code

}

2 番目の条件:

if (document.URL.indexOf("#register") >= 0) {

// Code...

}

参考までに、これは私がここで経験しているバグを解決するのに役立ちます

4

4 に答える 4

6

最初に完全一致をチェックします。そして、ハッシュを含まないパス名でそれを行うので、おそらくあなたが望むことをしません。

2番目のものは、文字列が含まれていることを確認する"#register"ため、フルパスは、/#register_or_notまたはのように大きくなる可能性があります/some/other/path#register

おそらく最良のオプションは、URL で正規表現パターン マッチを実行して、一致するハッシュが「登録」のみであることを確認し、URL の残りの部分は何でも許可することです。

if (document.URL.match(/.*#register$/)) {
于 2013-05-24T11:00:08.607 に答える
2

2番目はURLに#registerが含まれているかどうかを確認するだけで、最初はURLパスです。location.hashでも実行できます

if(location.hash=='#register') { //....
于 2013-05-24T11:01:43.257 に答える
1

window.location.pathname最初のものはとの間の完全一致を実行し/#registerます。2 つ目は、内の任意の#register場所を探しdocument.URLます。

于 2013-05-24T11:01:32.037 に答える
1

このifブロックは、文字列が等しいかどうかをチェックします

if ( window.location.pathname == '/#register' ) {

 // Code

}

indexOf() メソッドは、文字列内で指定された値が最初に出現する位置を返します。

検索する値が存在しない場合、このメソッドは -1 を返します。

if (document.URL.indexOf("#register") >= 0) {

   // Code...

}
于 2013-05-24T11:06:02.227 に答える