我的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/

10-11 14:54