Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用JavaScript更新CSS着色_Javascript_Html_Css_Hex - Fatal编程技术网

无法使用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但这不是一个正确的答案,即使你解释了为什么它不起作用,代码仍然不起作用