【问题标题】:Check text color when radio is checked检查单选时检查文本颜色
【发布时间】:2019-07-27 09:57:16
【问题描述】:

我正在尝试在选择单选按钮时更改P1的文本颜色。如果选择向上,绿色,或向下,红色。我可以毫无问题地使用 css 更改单选框的颜色,但我无法更改文本。

<form>
  <p1>Test1: </p1>
  <input type="radio" id="up" style="vertical-align: middle" name="test1" value="Up" checked> Up
  <input type="radio" id="down" style="vertical-align: middle" name="test1" value="Down"> Down
  <input type="radio" id="route" style="vertical-align: middle" name="test1" value="en route"> En route  
  <input type="radio" id="house" style="vertical-align: middle" name="test1" value="In-House"> In-House  
  <b>  Notes: </b><br>
 </form>

【问题讨论】:

  • ^ 欢迎来到 SO。首先要注意,p1 不是有效元素; p 是。第二,你能和我们分享一些代码吗?如果没有一些更高级的 CSS 或一些简单的 JavaScript,你想要完成的工作是不可能的。

标签: html css radio


【解决方案1】:

欢迎来到堆栈溢出!

要在 JavaScript 中设置元素的颜色,您只需要访问元素,然后访问样式对象,然后设置颜色值。比如这个

<p id="changeMe">Text will change to green :)</p>
    <script>
    // Using ES5 (Ecma-Script 2015) for compatibility sake
    var elementToChange = document.querySelector("#changeMe")
    elementToChange.style.color = "green"
    </script>

你可以像这样在 JavaScript 中检测复选框是否被选中,

<input type="checkbox" id="check">
<h1 style="color: red;" id="res">Checked?</h1>
<button onclick="isChecked()">Check If Checked</button>
<script>
  function isChecked() {
  var element = document.querySelector("#check")
  var res = document.querySelector("#res")
  if(element.checked) {
    res.style.color = "green"
  }
  else {
    res.style.color = "red"
  }
  }

</script>

由于我们不喜欢在 Stack Overflow 上用勺子喂食,我会让你把 2 和 2 放在一起。祝你有美好的一天!

【讨论】:

    【解决方案2】:

    如果您正在寻找纯 CSS 解决方案,因为您没有将其标记为 js 问题,您也可以这样做,但您必须稍微调整一下 HTML。您可以添加任意数量的无线电输入,只要 p 元素出现在它们之后,这仍然有效。

    <form>
      <input type="radio" id="up" style="vertical-align: middle" name="test1" value="Up" checked><label for="up"> Up</label>  
      <input type="radio" id="down" style="vertical-align: middle" name="test1" value="Down"><label for="down"> Down</label>
      <p class="color-me">Test1: </p>
     </form>
    
    form {
      display: flex;
      flex-direction: row;
    } 
    
    .color-me {
      order: 1;
    }
    
    #up, #up ~ label, #down, #down ~ label {
      order: 2;
    }
    
    
    #up:checked ~ .color-me{
      background-color: tomato;
    }
    
     #down:checked ~ .color-me{
       background-color: steelblue;
    }
    

    【讨论】:

    • 是的,我一直在寻找 CSS。谢谢你,这很完美
    猜你喜欢
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2017-02-04
    • 2022-07-26
    • 2011-04-14
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多