首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不改变文本的情况下用JavaScript (我使用innerHTML)更改标题的颜色?

如何在不改变文本的情况下用JavaScript (我使用innerHTML)更改标题的颜色?
EN

Stack Overflow用户
提问于 2021-12-31 03:06:57
回答 3查看 268关注 0票数 -1

例如,当我使用“选择”菜单并选择颜色为紫色时。我希望标题的颜色更改为该颜色,但我不希望文本更改。innerHTML正在改变文本和颜色。我该如何解决这个问题?

代码语言:javascript
复制
#header {
color: green;
    }
#list {
        margin-top: 20px;
    }

.purple-color{
     color: purple;
 }
</style>
</head>
<body>
<h1 id="header">Header</h1>
    <!--Change Value of Header with Input Field-->
<div>
 Name:<input type="text" id="my-text" value="">
<p>Click the button to change the value of the header.</p>
<button onclick="onChange('header')">Click Me</button>
</div>

    <!-- Select Size Menu-->
<div class= "select-menu">
    <label for="header-color">Color:</label>

    <select name="select-menu" id = "list" onchange="changeColor()" >
    <option value="purple">Purple</option>
    <option value="blue">Blue</option>
    <option value="green">Green</option>
    </select>
  </div>

  <script>
      function changeColor(){
          const color = document.getElementById("header");
          const selectColor = document.getElementById('list').value;
    

         if (selectColor === "purple") {
             color.innerHTML = selectColor;
             color.style = 'color: #F00';
         }
         else if (selectColor === "blue") {
            color.innerHTML = selectColor;
            color.style = 'color: #F00';
         }

         else if (selectColor === "green") {
            color.innerHTML = selectColor;
            color.style = 'color: #F00';
         }
        
      }
  </script>
EN

回答 3

Stack Overflow用户

发布于 2021-12-31 03:15:05

设置innerHTML替换元素的HTML,在您的例子中是它的文本。只需单独使用color.style.color即可。注意,我使用了color.style.color,而不是color.style --您将整个样式对象重新分配到一个字符串!

代码语言:javascript
复制
function changeColor() {
  const color = document.getElementById("header");
  const selectColor = document.getElementById('list').value;


  if (selectColor === "purple") {
    // color.innerHTML = selectColor;
    color.style.color = selectColor
  } else if (selectColor === "blue") {
    // color.innerHTML = selectColor;
    color.style.color = selectColor;
  } else if (selectColor === "green") {
    // color.innerHTML = selectColor;
    color.style.color = selectColor;
  }

}
代码语言:javascript
复制
#header {
  color: green;
}

#list {
  margin-top: 20px;
}

.purple-color {
  color: purple;
}

</style></head><body>
代码语言:javascript
复制
<h1 id="header">Header</h1>
<!--Change Value of Header with Input Field-->
<div>
  Name:<input type="text" id="my-text" value="">
  <p>Click the button to change the color of the header.</p>
  <button onclick="changeColor()">Click Me</button>
</div>

<!-- Select Size Menu-->
<div class="select-menu">
  <label for="header-color">Color:</label>

  <select name="select-menu" id="list" onchange="changeColor()">
    <option value="purple">Purple</option>
    <option value="blue">Blue</option>
    <option value="green">Green</option>
  </select>
</div>

你在这里的困惑可能是一个很好的提醒,要小心你的名字。为什么不命名标题元素header或类似的东西?这样,当人们阅读您的代码时,他们会看到一些更能反映正在发生的事情的东西,比如在header.style.color = "purple"中,而不是像color.style.color = "purple"这样令人困惑的东西。

票数 0
EN

Stack Overflow用户

发布于 2021-12-31 03:19:17

将表单值设置为要设置的颜色可能更有效。然后,您就可以让您的changeColor()函数根据selectColor设置颜色。设置文本颜色应该使用color.style.color,而不是color.style

此外,changeColor()函数不应该更改标头的innerHTML。从你的评论来看,这应该是在点击“点击我”按钮时才能做到的。

这段代码应该做您想做的事情:

代码语言:javascript
复制
<html>
    <head>
        <style type="text/css">
            #header {
                color: green;
            }
            #list {
                margin-top: 20px;
            }
        </style>
    </head>
    
    <body>
        <h1 id="header">Header</h1>
            <!--Change Value of Header with Input Field-->

        <div>
            Name:<input type="text" id="my-text" value="">
            <p>Click the button to change the value of the header.</p>
            <button onclick="changeText('header')">Click Me</button>
        </div>
        
        <!-- Select Size Menu-->
        <div class= "select-menu">
            <label for="header-color">Color:</label>

            <select name="select-menu" id = "list" onchange="changeColor()" >
                <option value="purple">Purple</option>
                <option value="blue">Blue</option>
                <option value="green">Green</option>
            </select>
        </div>
    
    <script>
        function changeColor(){
            const color = document.getElementById("header");
            const selectColor = document.getElementById("list").value;
            color.style.color = selectColor;
            
        }

        function changeText(id) {
            const elem = document.getElementById(id);
            const text = document.getElementById("my-text").value;
            elem.innerHTML = text;
        }
    </script>

    </body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2021-12-31 03:19:37

修改后的脚本标记:

代码语言:javascript
复制
<script>
    function changeColor(){
        const color = document.getElementById("header");
        const selectColor = document.getElementById('list').value;

       if (selectColor === "purple") {
          color.setAttribute('style', 'color: purple')
       }
       else if (selectColor === "blue") {
          color.setAttribute('style', 'color: blue')
       }

       else if (selectColor === "green") {
          color.setAttribute('style', 'color: green')
       }

       // You can also use something like this
       // color.setAttribute('style', `color: ${selectColor}`); // selectColor has to be a valid css color value
      
    }
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70538653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档