【问题标题】:how to check if the url contains multiple strings. Javascript/jquery如何检查 url 是否包含多个字符串。 Javascript/jQuery
【发布时间】:2012-08-02 23:07:36
【问题描述】:
【问题讨论】:
标签:
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)
我发布答案的原因也是为了简要解释&& 运算符的工作原理:给定expr1 && expr2,&& operator "返回 expr1 如果它可以转换为 false;否则,返回 expr2。"
“转换为假”是什么意思?基本上null、undefined、0、NaN 和""(空字符串)是“假的”并将“转换为假”。非零数字、非空字符串和任何对象都是“真实的”,将被转换为真实。
这意味着当您说"name=franky" && "gender=male" 时,&& 运算符测试第一个操作数,发现(在这种情况下)它不能被转换为 false,所以它返回 "gender=male" .所以你的代码在某些时候似乎工作的原因是它实际上是这样做的:
if(window.location.href.indexOf("gender=male") > -1)
【解决方案3】:
您可以将它分成两部分并调用 indexOf 两次,而不是尝试在同一个调用中检查两个字符串。像这样的:
if(window.location.href.indexOf("name=franky") > -1 &&
window.location.href.indexOf("gender=male") > -1)