Javascript未更改颜色

2nbm6dog  于 2023-03-06  发布在  Java
关注(0)|答案(4)|浏览(131)

我试图改变温度计的颜色,我从字体真棒,但现在当我试图改变它的颜色,所以在当时它不工作,当我分配新的变量在我的函数顶部,以检查是否有任何问题,我写在我的函数,虽然新的变量是完全正确的分配,但分配新的变量在顶部的其余代码停止工作,如果我注解了我在上面创建的新变量,代码就可以完美地工作了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
      <title>Document</title>
      <style>
        *{
            padding: 0;
            margin: 0;
            background-color: black;
            color: white;
        }

        .container{
            width: 100vw;
            height: 100vh;
            display: flex;`your text`
            align-items: center;
            justify-content: center;
            font-size: 30px;
        }
      </style>
</head>
<body>
    <div class="container">
        <h1 class="heading">I am <br> Thermometer <span id="icon"></span></h1>
       

        
    </div>

    <script>
         const heading = document.getElementsByClassName("heading")
         heading.style.color="red";

        const thermometer = ()=>{
            let temp = document.getElementById("icon")

            temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-empty"></i>'
            

            setTimeout(()=>{
                temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-quarter"></i>';
                temp.style.Color ="#d63031"
                
            },1000);
            setTimeout(()=>{
                temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-half"></i>';
            },2000)
            setTimeout(()=>{
                temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-three-quarters"></i>'
            },3000)
            setTimeout(()=>{
                temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-full"></i>'
                
            },4000)

        }

        thermometer()

        setInterval(thermometer,5000)
    </script>

<script src="https://kit.fontawesome.com/8c672f3d7e.js" crossorigin="anonymous"></script>
   
</body>
</html>
yqkkidmi

yqkkidmi1#

有几件事,语法是color,你用了大写字母。
const heading = document.getElementsByClassName("heading");应为document.querySelector('heading');,否则会出现控制台错误,因为它需要多个元素。
您还将颜色分配给<span id='icon'></span>,而不是图标本身,请参阅代码,我相信您可以想到一个更好的方法来实现这一点。
下面是解决方案...

<script>
        const heading = document.querySelector('heading');
        heading.style.color = "red";


        const thermometer = () => {
        let temp = document.getElementById("icon")

            temp.innerHTML = '<i class="fa-sharp fa-solid fa-temperature-empty"></i>'

            setTimeout(() => {
                temp.innerHTML = '<i class="fa-sharp fa-solid fa-temperature-quarter" style="color: #d63031"></i>';
            }, 1000);
            setTimeout(() => {
                temp.innerHTML = '<i class="fa-sharp fa-solid fa-temperature-half"></i>';
            }, 2000)
            setTimeout(() => {
                temp.innerHTML = '<i class="fa-sharp fa-solid fa-temperature-three-quarters"></i>'
            }, 3000)
            setTimeout(() => {
                temp.innerHTML = '<i class="fa-sharp fa-solid fa-temperature-full"></i>'

            }, 4000)

        }

        thermometer();

        setInterval(thermometer, 5000);
</script>
z4iuyo4d

z4iuyo4d2#

主要的问题是你的重置将**所有东西的颜色设置为白色。

* {color: white;}

一开始重置是个坏主意,但是尤其是颜色,这导致代码无法工作的原因是你正在改变<span>的颜色,但是它里面的<i>元素(实现了字体awesome图标),而不是像通常那样从<span>继承,被你的全面重置强制为白色
用户代理样式表(浏览器默认样式)的存在是有原因的,它们实际上使你作为一个web开发人员的生活变得更加容易。不要试图用星号(*)选择器覆盖它们。
相反,只需在主体级别应用颜色,并通过正常继承将其应用于颜色继承有意义的那些元素。

body {color: white;}

下面是一个演示片段:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个

sczxawaw

sczxawaw3#

Javascript区分大小写

这条线

temp.style.Color ="#d63031"

应改为:

temp.style.color ="#d63031"

您可能会分心,因为HTML/CSS通常不区分大小写

例如,您可以调用标记<DIV><div>,甚至dIv,但是Javascript变量和属性是区分大小写的。

eoigrqb6

eoigrqb64#

也许可以尝试添加

style="color: red"

导入到temp.innerHTML中。
像这样:

style="color: red"

导入到temp.innerHTML中。
像这样:

temp.innerHTML='<i class="fa-sharp fa-solid fa-temperature-empty" style="color:red"></i>'

相关问题