更改背景颜色反转文本jQuery

时间:2016-04-04 13:32:51

标签: jquery html css

我找到了一些有希望的代码来做随机背景css颜色并反转文本颜色,但似乎无法使其工作。非常感谢任何帮助。

$(document).ready(function() {
var colors = ['#000000', '#FF3516', '#34FF17', '#2458FF'];
function UpdateColors() {
    $(this).each(function(index) {
        var color = colors[Math.floor(Math.random() * colors.length)];
        var invertedColor = invertColor(color);
        $(this).css({
            'background-color': color,
            'color': invertedColor
        });
    });   
}
//$('div').UpdateColors();
});

小提琴:

https://jsfiddle.net/abennington/h49zh3gy/10/

2 个答案:

答案 0 :(得分:2)

您需要在特定元素或元素集上调用css()方法; $(this)将无法在您使用它的环境中运行。

所以,因为看起来你正试图为每个元素做这件事:

$(document).ready(function() {
    var colors = ['#000000', '#FF3516', '#34FF17', '#2458FF'];
    $("*").each(function() {
        var color = colors[Math.floor(Math.random() * colors.length)];
        var invertedColor = invertColor(color);
        $(this).css({ 'background-color': color, 'color': invertedColor });
    });
});

如果您想在body元素上执行此操作,请将"*"替换为"body"

(我假设您的invertColor()功能有效。)

编辑:我想我有点错过了你的观点。延长$后,您就可以在底部注释掉的通话中调用您的功能。但是,如果您不想({我认为,稍微更加繁琐)使用$进行操作,我的代码仍然有效。

答案 1 :(得分:2)

你没有扩展jQuery,所以它看不到$('div')。UpdateColors()函数。

我已经调整过,所以你可以这样使用这个功能:jQuery.fn.UpdateColors = function () { ... }

请参阅此小提琴https://jsfiddle.net/h49zh3gy/11/

但是,由于未在任何地方定义invertColor函数,您仍会收到错误。