Javascript 为什么以前的背景色记录在变量C中?
我想制作一个输出随机颜色的应用程序。但是颜色代码是前一个输出的。为什么以前的背景色记录在变量C中?请帮忙。 我的英语很差,sry。 我刚开始学习jquery 函数getNum(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 函数getColor(n){ $(“.color”+n).css( “背景色”, rgb(“+getNum(0255)+”、“+getNum(0255)+”、“+getNum(0255)+”) ); var c=$(“.color”+n).css(“backgroundColor”); $(“.color”+n).text(c) }; $(“#randcolor”)。单击(函数(){ getColor(1); getColor(2); getColor(3); }); $(文档).ready(函数(){ getColor(1); getColor(2); getColor(3); });代码>Javascript 为什么以前的背景色记录在变量C中?,javascript,jquery,colors,background,Javascript,Jquery,Colors,Background,我想制作一个输出随机颜色的应用程序。但是颜色代码是前一个输出的。为什么以前的背景色记录在变量C中?请帮忙。 我的英语很差,sry。 我刚开始学习jquery 函数getNum(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 函数getColor(n){ $(“.color”+n).css( “背景色”, rgb(“+getNum(0255)+”、“+getNum(0255)+”、“+getNum(0255)+”) ); var
*{text align:center}
.颜色{
显示:内联块;
边界半径:10px;
宽度:200px;
高度:200px;
线高:200px;
颜色:#fff;
文本阴影:0 5px 10px rgba(0,0,0,8);
盒影:0 5px 10px rgba(0,0,0,5);
利润率:20px;
过渡:轻松。5s;
}
提供随机颜色
编辑:针对添加的魔法进行重构,包括Terry的jQuery方法链接建议:
函数getNum(str,char){
返回str+Math.floor(Math.random()*257)+char;
}
函数getColor(){
var color=“rgb”+[…”(,)].reduce(getNum);
$(this.css(“背景色”),color.text(颜色);
};
函数changeColors(){
$.each($(“.color”)、getColor);
}
$(“#randcolor”)。单击(更改颜色);
$(文档).ready(更改颜色)代码>
*{text align:center}
.颜色{
显示:内联块;
边界半径:10px;
宽度:200px;
高度:200px;
线高:200px;
颜色:#fff;
文本阴影:0 5px 10px rgba(0,0,0,8);
盒影:0 5px 10px rgba(0,0,0,5);
利润率:20px;
过渡:轻松。5s;
}
提供随机颜色
原因很简单:您启用了CSS转换,因此背景色转换到下一种颜色需要时间。此转换以异步方式进行,但当背景色尚未完全转换时,您将在设置背景色后立即读取背景色。.css()
方法使用window.getComputedStyle()
,这意味着无论元素处于何种转换状态,它都会获取元素当前的背景颜色
我的建议是,您只需生成颜色并将其存储在变量中,然后根据我的评论,使用它设置.css()
和.text()
。通过这种方式,您还可以利用jQuery中的链接:
var backgroundColor = "rgb(" + getNum(0, 255) + "," + getNum(0, 255) + "," + getNum(0, 255) + ")";
$(".color" + n)
.css("background-color", backgroundColor)
.text(backgroundColor);
见下面的概念证明:
函数getNum(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
函数getColor(n){
var backgroundColor=“rgb(“+getNum(0255)+”、“+getNum(0255)+”、“+getNum(0255)+”);
$(“.color”+n).css(
“背景色”,
背景色
).文本(背景色);
};
$(“#randcolor”)。单击(函数(){
getColor(1);
getColor(2);
getColor(3);
});
$(文档).ready(函数(){
getColor(1);
getColor(2);
getColor(3);
});代码>
*{text align:center}
.颜色{
显示:内联块;
边界半径:10px;
宽度:200px;
高度:200px;
线高:200px;
颜色:#fff;
文本阴影:0 5px 10px rgba(0,0,0,8);
盒影:0 5px 10px rgba(0,0,0,5);
利润率:20px;
过渡:轻松。5s;
}
提供随机颜色
我根本看不出问题所在:它似乎工作正常。另一方面,您不需要指定颜色并再次尝试读取:只需生成颜色,将其存储在变量中,然后使用该变量同时设置.css()
和.text()
。您可以提供HTML的一个片段,或者将其与我的进行比较吗?我想问题就在这里,关键是css的问题。脚本在整个转换过程中无法正常工作。我该如何解决这个问题?@Terry这是css的问题。脚本在整个转换过程中无法正常工作。我怎样才能解决这个问题?非常感谢。