-1

我尝试为 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";
    }
    }
}
4

2 回答 2

0

我尝试为 Google Chrome 做一个扩展

伙计,请先了解一些基本的 JavaScript 知识。(如果您正在尝试开发浏览器扩展,您实际上应该已经拥有它。)

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

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

因此,您的代码实际上所做的是首先对比较值进行逻辑 OR,然后进行比较——所以基本上,这与您if( this === ('like' || 'like2' || 'like3') )首先编写的代码相同。

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

if(this === 'like' || this === 'like2' || this === 'like3')将是做你真正想要的正确方法。

于 2012-06-28T08:29:45.153 回答
0

like_message = "Sarp!"您总是用 for 循环中的当前值覆盖。我修复了它并将其重命名为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忘记输入。varlike


这里是相同的代码,但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");
        }

    });

}
于 2012-06-28T01:35:30.187 回答