1

質問では、URLに特定の文字列が含まれているかどうかを確認する方法。Javascript/jquery の答えは、URL に特定の文字列が含まれているかどうかを確認します。これを拡張して、name=franky と性別=male という 2 つのものが含まれているかどうかを確認したいと思います。私は試した

if(window.location.href.indexOf("name=franky" && "gender=male") > -1)

最初は機能しているように見えましたが、さらにテストしたところ、名前または性別のいずれかのみが存在する場合に機能するように見えることがわかりました. ここでどこが間違っていますか?

4

3 に答える 3

8

同じ呼び出しで両方の文字列をチェックしようとする代わりに、2 つの部分に分割して indexOf を 2 回呼び出すことができます。このようなもの:

if(window.location.href.indexOf("name=franky") > -1 && 
    window.location.href.indexOf("gender=male") > -1)
于 2012-08-05T22:12:55.090 に答える
5

この.indexOf()関数は単一の文字列のみを検索します。.indexOf()2 つの文字列をテストするには、Christofer の回答に従って2 つの呼び出しが必要です。

if(window.location.href.indexOf("name=franky") > -1 && 
   window.location.href.indexOf("gender=male") > -1)

私も答えを投稿している理由は、演算子がどのように機能するかを簡単に&&説明するためですexpr1 && expr2&& expr1 expr2

「偽に変換」とはどういう意味ですか? 基本的nullundefined0NaN""(空文字列) は「偽」であり、「偽に変換」されます。ゼロ以外の数値、空でない文字列、および任意のオブジェクトは「真実」であり、真に変換されます。

つまり"name=franky" && "gender=male"&&演算子が最初のオペランドをテストすると、(この場合) false に変換できない"gender=male"ことが判明したため、 を返します。したがって、コードが時々機能しているように見えた理由は、実際にはこれを行っていたためです。

if(window.location.href.indexOf("gender=male") > -1)
于 2012-08-05T22:30:29.453 に答える
4

別の一般的なアプローチ

function CheckIfAllQueryStringsExist(url, qsCollection) {
    for (var i = 0; i < qsCollection.length; i++) {
        if (url.indexOf(qsCollection[i]) == -1) {
            return false;
        }
    }
    return true;
}

このように呼びます。

var myUrl = window.location.href;
var queryStrings = ["name=franky", "gender=male"];
var allPresent = CheckIfAllQueryStringsExist(myUrl, queryStrings);
于 2012-08-05T22:37:01.357 に答える