如果条件在return语句中

时间:2013-01-07 16:49:48

标签: javascript jquery

我需要在一个返回多值的函数中创建一个if语句。我试过了,但它没有用。

a(this).attr('src', function(i, current){
    if ( i == 'http://www.old.com'){
        return current.replace('http://www.old.com','http://www.new.com');
    }
    else if ( i == 'http://www.older.com'){
        return current.replace('http://www.older.com','http://www.new.com');
    }
    else ();
});

2 个答案:

答案 0 :(得分:3)

jQuery基于回调的.attr函数的格式是

.attr( attributeName, function(index, attr) )

您的if语句使用第一个回调参数i,它始终是索引号,但您似乎期望它们是字符串。但是,每个属性的字符串值都在第二个回调参数中。您可能想要比较第二个参数current

此外(根据您发表的评论),您实际上并不希望与old.com完全匹配,您希望查看该网址是否以http://www.old.com开头:

if ( current.indexOf('http://www.old.com') == 0) { ...

答案 1 :(得分:1)

你正在测试我,然后更换电流。除非当前和我相同,否则你可能会遇到错误的情况并且不会更换。另外,()是不正确和不必要的。

a(this).attr('src', function(index, current){
    if ( current == 'http://www.old.com'){
        return 'http://www.new.com';
    }
    else if ( current == 'http://www.older.com'){
        return 'http://www.new.com';
    }
});
编辑删除替换,谢谢@wirey