【问题标题】:how to check if the url contains multiple strings. Javascript/jquery如何检查 url 是否包含多个字符串。 Javascript/jQuery
【发布时间】:2012-08-02 23:07:36
【问题描述】:

在问题how to check if the url contains a given string. Javascript/jquery 答案检查 url 是否包含给定的字符串。我想扩展它以检查它是否包含两个东西 name=franky && gender=male。我试过了

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

最初似乎有效,但经过进一步测试,我发现如果只有姓名或性别之一存在,它似乎有效。我哪里错了?

【问题讨论】:

    标签: javascript jquery url


    【解决方案1】:

    另一种通用方法

    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);
    

    【讨论】:

      【解决方案2】:

      .indexOf() 函数只查找单个字符串。根据 Christofer 的回答,要测试两个字符串,您需要两次调用 .indexOf()

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

      我发布答案的原因也是为了简要解释&amp;&amp; 运算符的工作原理:给定expr1 &amp;&amp; expr2&amp;&amp; operator "返回 expr1 如果它可以转换为 false;否则,返回 expr2。"

      “转换为假”是什么意思?基本上nullundefined0NaN""(空字符串)是“假的”并将“转换为假”。非零数字、非空字符串和任何对象都是“真实的”,将被转换为真实。

      这意味着当您说"name=franky" &amp;&amp; "gender=male" 时,&amp;&amp; 运算符测试第一个操作数,发现(在这种情况下)它不能被转换为 false,所以它返回 "gender=male" .所以你的代码在某些时候似乎工作的原因是它实际上是这样做的:

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

      【讨论】:

      • +1 以获得解释。我正要发表评论。
      【解决方案3】:

      您可以将它分成两部分并调用 indexOf 两次,而不是尝试在同一个调用中检查两个字符串。像这样的:

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

      【讨论】:

      • 我最初尝试过类似的方法,但语法不太正确。
      猜你喜欢
      • 1970-01-01
      • 2012-03-28
      • 2011-07-20
      • 2014-12-27
      • 1970-01-01
      • 2017-06-12
      • 2022-12-30
      • 1970-01-01
      相关资源
      最近更新 更多