我的JS文件中有此代码。如果我删除if else循环,则可以打招呼,否则不会。
我在Firebug控制台中也没有收到任何错误
基本上在这些循环中,我只是检查url是否包含几个关键字,以便可以将CSS选中
$(document).ready(function(){
var userPage = /child\/(.+)/.exec(location.href)[1];
if( userPage.indexOf('show') != -1 )
{$('.profile').addClass('selected');}
if( userPage.indexOf('workbook') != -1 )
{
$('.selected').removeClass('selected');
$('.workbook').addClass('selected');
}
if( userPage.indexOf('gallery') != -1 )
{
$('.selected').removeClass('selected');
$('.gallery').addClass('selected');
}
if( userPage.indexOf('mylist') != -1 )
{
$('.selected').removeClass('selected');
$('.mylist').addClass('selected');
}
if( userPage.indexOf('Photos') != -1 )
{
$('.selected').removeClass('selected');
$('.photos').addClass('selected');
}
if( userPage.indexOf('profile/list') != -1 )
{
$('.selected').removeClass('selected');
$('.list').addClass('selected');
}
alert("hillo");
最佳答案
设置警报的方式不在if语句中,因此无论如何它都应该发出警报。如果没有警报,则说明您的脚本有错误,并且我发现至少两个:
您假设url包含字符串child/
,如果没有,则脚本将停止并且不起作用,接下来,您假设exec()
的输出是一个至少包含两个值的数组,选择第二个值数组,如果由于某种原因您的网址不包含child/
,则该数组中将没有第二个值,并且脚本将暂停,但随后它又已在exec()
中暂停。
第二个错误是document.ready
函数未关闭,多数民众赞成在错字。
另一方面,您应该找出一种更动态地执行此操作的方法。您正在使用与要检查的url字符串相同的类,因此在大多数情况下,您可以直接在选择器中使用它,将函数缩减为几行,例如:
$(document).ready(function() {
var url = 'http://somesite.com/child/gallery'; //just a test url
var userPage = url.indexOf('child/') != -1 ? /child\/(.+)/.exec(url)[1] : null;
if (userPage) {
console.log('has child in url');
$('.selected').removeClass('selected');
$('.'+userPage).addClass('selected');
}else{
console.log('not ok');
}
});
关于javascript - Javascript不起作用,我将其放在dom.ready中的jQuery中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11876898/