调用 JS 函数以反转 jQuery .each 函数内的背景色
Calling a JS function to invert background-color inside a jQuery .each function
这篇文章中有一个关于在jQuery文档就绪函数中调用JS函数的问题;但是,它没有回答我的问题。
我正在尝试编写一个函数,该函数在 html 文档中循环访问div,为div 背景提供随机颜色。这部分正在工作。在下一步中,我想使用反转颜色函数反转divs 背景颜色;但是,我无法弄清楚如何将此函数合并到 jQuery 代码中。
工作代码应首先为每个div分配一种随机颜色,然后使用反转颜色函数反转该颜色。
我尝试在 .each 函数内部和外部调用 invertColor 函数。
这是当前的JS代码:
function invertColor(hexTripletColor) {
var color = hexTripletColor;
color = color.substring(1); // remove #
color = parseInt(color, 16); // convert to integer
color = 0xFFFFFF ^ color; // invert three bytes
color = color.toString(16); // convert to hex
color = ("000000" + color).slice(-6); // pad with leading zeros
color = "#" + color; // prepend #return color;
}
$(document).ready(function() {
$("div").each(function() {
var color = ["#b27485", "#74b2a1", "#cedbd9", "#abece4", "#ecabb3", "#1cdb4f", "#7e8dab", ];
var rand = Math.floor(Math.random() * color.length);
$(this).css("background-color", color[rand]);
$(this).css(invertColor(color));
$(function() {
invertedColor(color);
});
});
});
HTML 代码和输出可以在此小提琴中查看:
invertColor 不返回任何内容,因此您正在设置css(undefined);
,我不确定在哪里定义hexTripletColor
。您正在将数组而不是颜色从数组传递到您的方法。 $(this).css(invertColor(color));
所以你正在寻找这样的东西,我将color
设置为你计算的倒置值,不确定你到底要设置什么。
function invertColor(hexTripletColor) {
var color = hexTripletColor;
color = color.substring(1); // remove #
color = parseInt(color, 16); // convert to integer
color = 0xFFFFFF ^ color; // invert three bytes
color = color.toString(16); // convert to hex
color = ("000000" + color).slice(-6); // pad with leading zeros
color = "#" + color; // prepend #return color;
return {
color: color
};
}
$(document).ready(function() {
$("div").each(function() {
var color = ["#b27485", "#74b2a1", "#cedbd9", "#abece4", "#ecabb3", "#1cdb4f", "#7e8dab", ];
var rand = Math.floor(Math.random() * color.length);
$(this).css("background-color", color[rand]);
$(this).css(invertColor(color[rand]));
});
});
invertColor()
不返回任何内容,因此只需在末尾添加一个 return 语句,如下所示:
function invertColor(hexTripletColor) {
var color = hexTripletColor;
color = color.substring(1); // remove #
color = parseInt(color, 16); // convert to integer
color = 0xFFFFFF ^ color; // invert three bytes
color = color.toString(16); // convert to hex
color = ("000000" + color).slice(-6); // pad with leading zeros
color = "#" + color; // prepend #return color;
return color;
}
然后将$(this).css(invertColor(color));
更改为$(this).css("background-color", invertColor(color));
相关文章:
- 调用$.each()函数时上下文发生变化
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- jquery.each函数和传递变量
- $.each 中的“this”,当需要使用“this”访问对象的函数时
- 如何选择嵌套了两个 .each() 函数的多个元素
- Javascript each() 函数删除链接
- 我是否错误地使用了jQuery .each函数
- javascript使用$.each解析内容,并创建一个数组发送给函数
- 需要 $.each 函数来更改 json 字符串
- jQuery插件返回this.each并为每个对象添加函数属性
- jshashtable.each使用现有函数
- 使用JavaScript中的for each函数比较数组中的值
- 实现Jquery时出现问题'成对元素上的s.each()函数
- 在jquery each()迭代器函数中访问JS对象
- Jquery .each 函数上的奇怪问题
- 对jQuery $.each函数感到困惑
- .each() 在 .clone() 之后用于验证函数
- 如何获取在 each 函数中迭代的当前项
- 如何在jquery函数$.each($(“abc”)内传递变量.
- 使用函数"each"创建多个数组;从jQuery