jquery如果这个或这个不起作用

时间:2012-06-28 00:50:54

标签: jquery facebook google-chrome google-chrome-extension

我尝试为Google Chrome进行扩展,我使用jQuery将Facebook替换为按钮与其他文字,但是当我说if(this ==='like' || 'like2' || 'like3') else if (this ==='unlike' || 'unlike2' || 'unlike3')时它不起作用。

我的代码: 不是:我希望这能用于多语言。

var like_message = "Sarp!";

$("body").mouseover(function(){
    convertLikes();
});
convertLikes();



function convertLikes(){
    var likes = document.getElementsByClassName('default_message');
    //var butt = like_buttons[0];
    for (var i = 0; i<likes.length; i++){
    like = likes[i];
    //like_message = like.getElementsByClassName('default_message')[0];
    like_message = like.innerHTML;
    if (like_message === 'Like' || like_message === 'E p&#235;lqej' || like_message === ' Be&#287;en'){
        like.innerHTML = like_message;
    }
    if (like_message === 'Unlike' || like_message ===  'Nuk e p&#235;lqej' || like_message === 'Be&#287;enmekten Vazge&#231;'){
        like.innerHTML = "Tam";
    }
    }
}

2 个答案:

答案 0 :(得分:0)

您始终使用for循环中的当前值覆盖like_message = "Sarp!"。我修复了它并将其重命名为default_like_message

var default_like_message = "Sarp!";

convertLikes();

function convertLikes(){
    var likes = document.getElementsByClassName('default_message');

    for (var i = 0; i<likes.length; i++){

        var like = likes[i];
        var like_message = like.innerHTML;

        if (like_message === 'Like' || like_message === 'E p&#235;lqej' || like_message === ' Be&#287;en'){
            like.innerHTML = default_like_message;
        } else if (like_message === 'Unlike' || like_message ===  'Nuk e p&#235;lqej' || like_message === 'Be&#287;enmekten Vazge&#231;'){
            like.innerHTML = "Tam";
        }

    }
}

我将您的第二个if案例更改为else if,但您忘记在var之前键入like


这里的代码相同,但是jQuery样式:

var default_like_message = "Sarp!";

convertLikes();

function convertLikes() {

    $('.default_message').each(function() {

        var like_message = $(this).text();

        if (like_message === 'Like' || like_message === 'E p&#235;lqej' || like_message === ' Be&#287;en'){
            $(this).text(default_like_message);
        } else if (like_message === 'Unlike' || like_message ===  'Nuk e p&#235;lqej' || like_message === 'Be&#287;enmekten Vazge&#231;'){
            $(this).text("Tam");
        }

    });

}

答案 1 :(得分:0)

  

我尝试为Google Chrome扩展

老兄,请先获得一些基本的JavaScript知识。 (如果您正在尝试开发浏览器扩展程序,那么实际上已经了。)

  

但是当我说if(this ==='like' || 'like2' || 'like3') else if (this ==='unlike' || 'unlike2' || 'unlike3')时它不起作用。

无法检查变量是否具有这三种值中的一种 - 因为||运算符的优先级高于==运算符。

所以你的代码实际上做的是首先对比较值进行逻辑OR,然后然后进行比较 - 所以基本上,就像你在第一个中写if( this === ('like' || 'like2' || 'like3') )一样的地方。

由于'like'作为非空字符串在JS中变为true,因此表达式('like' || 'like2' || 'like3')的值总是 'like' - 所以你是只是将this'like'进行比较,而不是if条件中的以下值之一。

if(this === 'like' || this === 'like2' || this === 'like3')将是正确执行您实际想要的方式。