如何检查网址是否包含多个字符串.使用Javascript/jQuery的

ak8*_*k85 1 javascript url jquery

如何检查url是否包含给定字符串的问题中.Javascript/jquery 答案检查url是否包含给定的字符串.我想扩展它以检查它是否包含两个名称= franky && gender = male.我试过了

if(window.location.href.indexOf("name=franky" && "gender=male") > -1)
Run Code Online (Sandbox Code Playgroud)

这似乎最初起作用,但经过进一步的测试,我发现如果只有一个名称或性别存在,它似乎有效.我在哪里错了?

Chr*_*son 8

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

if(window.location.href.indexOf("name=franky") > -1 && 
    window.location.href.indexOf("gender=male") > -1)
Run Code Online (Sandbox Code Playgroud)


nnn*_*nnn 5

.indexOf()函数仅查找单个字符串.要测试两个字符串,您需要.indexOf()根据Christofer的答案进行两次调用:

if(window.location.href.indexOf("name=franky") > -1 && 
   window.location.href.indexOf("gender=male") > -1)
Run Code Online (Sandbox Code Playgroud)

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

"转换为虚假"是什么意思?基本上null,undefined,0,NaN""(空字符串)是"falsy"和将"转换为假".非零数字,非空字符串和任何对象都是"真实的"并将转换为true.

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

if(window.location.href.indexOf("gender=male") > -1)
Run Code Online (Sandbox Code Playgroud)