请查看以下内容:
jQuery(document).ready(function() {
var full_url = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
var part_url = window.location.protocol + "//" + window.location.host + "/domain/shop/";
part_url = part_url + "cat1/";
if (full_url == part_url)
{
jQuery("li.cat1").addClass("current");
}
});
出于某种原因,上述代码永远不会成为现实,我很困惑为什么。我已经单独提醒变量“part_url”和“full_url”,它们都匹配,为什么if语句没有返回true?我知道这可能是我错过的傻事......
答案 0 :(得分:1)
你确定它没有回归真实吗?尝试:
alert(full_url == part_url);
这将表明字符串是否不匹配,或者if
的内容是否只是没有效果。
如果它是大写/小写的问题,那么最好使用toLowerCase()
来比较正则表达式,否则你可以得到错误/错误匹配(如果URL包含正则表达式字符):
if (full_url.toLowerCase() == part_url.toLowerCase()) { ... }
如果不是这样 - 试试:
检查字符串的长度:
alert(full_url.length); alert(part_url.length);
在字符串上使用substr
来缩小不匹配的部分:
alert(full_url.substr(1,20) == part_url(substr(1,20));
(甚至可以使用一个循环来逐个字符地比较 - 它可能是数字'1'而不是字母'l'......)
答案 1 :(得分:0)
如果等于运算符说false
,那么无论你多么相信它们,它们就不一样了。 ;)试试这个:
var test = function (s, t)
{
var sl = s.length;
var tl = t.length;
var l = sl < tl ? sl : tl;
for (var i = 0; i < l && s[i] == t[i]; ++i) /* empty */;
if (i < l || sl != tl) {
print("common head: '" + s.substr(0, i) + "'");
print("tail s: '" + s.substr(i) + "'");
print("tail t: '" + t.substr(i) + "'");
}
};
答案 2 :(得分:0)
window.location.host + "/" + window.location.pathname;
location.pathname
包含前导/
,因此您将在主机名后面用两个斜杠创建http://www.example.com//domain/shop/cat1
。显然,这永远不会匹配。优化你的眯着眼睛,看看他们是否是同样的力量!