无法使用JavaScript更新CSS着色
我已经尝试了一段时间,但由于某些原因,颜色没有更新。如果我不得不猜测,这与我返回一个无效字符串有关,但我不确定。预期的结果是,它将小时、分钟和秒分别转换为十六进制值,但由于某些原因,它无法工作。如果有人能帮忙,我们将不胜感激。谢谢无法使用JavaScript更新CSS着色,javascript,html,css,hex,Javascript,Html,Css,Hex,我已经尝试了一段时间,但由于某些原因,颜色没有更新。如果我不得不猜测,这与我返回一个无效字符串有关,但我不确定。预期的结果是,它将小时、分钟和秒分别转换为十六进制值,但由于某些原因,它无法工作。如果有人能帮忙,我们将不胜感激。谢谢 var div=document.getElementById(“完整”); 函数getclockColor(){ var h=toString(today.getHours()); var m=toString(today.getMinutes()); var s
var div=document.getElementById(“完整”);
函数getclockColor(){
var h=toString(today.getHours());
var m=toString(today.getMinutes());
var s=toString(today.getSeconds());
颜色=“#”+h+m+s;
}
返回颜色;
}
函数changeColor(){
div.style.backgroundColor=getclockColor();
}
设置间隔(changeColor,1000)代码>
正文{
溢出:隐藏;
保证金:0;
填充:0;
}
#满满的{
位置:绝对位置;
身高:100%;
宽度:100%;
}
几个问题:
- 您在那里有一个额外的悬空
}
(这就是您得到非法返回语句的原因)。不在函数中时不能返回
- 此外,
今天的
没有设置在任何位置
- 没有名为
toString()
的函数toString()
是一个数字方法,所以您可以这样调用它:today.getHours().toString()
- 如果你的H、M和S是10,你可能需要考虑0填充,因为你可能得到无效的十六进制代码(4个字符长),这可能不是你要找的。
看到这个(注意,颜色正在改变,但是因为它使用十六进制代码:
var div=document.getElementById(“完整”);
函数getclockColor(){
var today=新日期();
var h=today.getHours().toString();
var m=today.getMinutes().toString();
var s=today.getSeconds().toString();
var color='#'+h+m+s;
返回颜色;
}
函数changeColor(){
log(getclockColor());
div.style.backgroundColor=getclockColor();
}
设置间隔(changeColor,1000);
正文{
溢出:隐藏;
保证金:0;
填充:0;
}
#满满的{
位置:绝对位置;
身高:100%;
宽度:100%;
}
您有多个错误:
您正在调用getclockColor
函数之外的return
(您还有一个额外的}
)
今天没有Date
对象。根据您的代码,我假设您想要一个新生成的Date
对象(使用当前日期)。您可以像这样创建Date
对象:new Date()
这不是一个错误,但正如您所知,您不需要将数字转换为字符串。当使用+
运算符连接到字符串时,它会自动将值转换为字符串
当数字仅包含一个数字时,请考虑添加零,因为否则您会发现许多情况下生成的字符串少于6个数字(加上
)
这个想法没有多大意义,因为您要将三个“随机”数字组合成一个字符串。在许多情况下,这不会产生有效的十六进制颜色字符串。您可以尝试使用hsl
格式,格式如下:hsl(120,100%,50%)
。您可以通过字符串模板轻松实现这一点:`hsl(${h},${m}%,${s}%
`
var div=document.getElementById(“完整”);
函数getclockColor(){
const today=新日期()
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
颜色=“#”+h+m+s;
返回颜色;
}
函数changeColor(){
div.style.backgroundColor=getclockColor();
}
设置间隔(changeColor,1000);
正文{
溢出:隐藏;
保证金:0;
填充:0;
}
#满满的{
位置:绝对位置;
身高:100%;
宽度:100%;
}
“出于某种原因”=未捕获的语法错误:非法返回语句
。打开控制台,它会告诉你这一点。你在返回之前过早地关闭了你的函数。修复后,它会告诉你今天是未定义的
。什么是今天。getHours()
?我今天看不到任何地方定义了
?这看起来不像javascript代码,这可能是您编写代码的第一个问题。如果缩进正确,您将看到语法错误。今天的定义在哪里?@epascarello Idid@Zanolon学会使用你的控制台!错误应该在那里告诉你问题所在。为什么人们对此投票?它不起作用。它正在输出invalid 5位十六进制代码,并在大约5次迭代后停止工作。@jmcgriz这是因为他输出秒数,当小于10秒时,它不是0填充的。我添加了控制台日志来显示这一点。当它输出<0秒时,十六进制代码看起来像这样\10914
@FrankerZ lol我知道它为什么不工作,我很抱歉只是问人们为什么要升级坏代码:(因为我已经解释了它背后的原因。@FrankerZ但这不是一个正确的答案,即使你解释了为什么它不起作用,代码仍然不起作用