【问题标题】:Set priority color of list element when button is clicked单击按钮时设置列表元素的优先级颜色
【发布时间】:2017-10-08 12:05:43
【问题描述】:

所以我的困境是我有一个页面,上面有一个待办事项列表样式输入,带有确定待办事项优先级的单选按钮。

这是 HTML 部分:

<p style="">A to-do list</p>

<ol class="ch5">

</ol>

<p>&nbsp;</p>
<p>
    <label for="txtAdd">New thing to do:</label>
    <input name="txtAdd" type="text" id="txtAdd" size="50" maxlength="50"/>
</p>
<p>Set Priority</p>
<p>
    <label>
        <input type="radio" name="rgPrior" value="hi" id="rgPrior_0"/>
        High</label>
        <br/>
    <label>
        <input type="radio" name="rgPrior" value="med" id="rgPrior_1"/>
        Meduim</label>
        <br/>
    <label>
        <input type="radio" name="rgPrior" value="low" id="rgPrior_2"/>
        Low</label>
        <br/>
</p>
<p>&nbsp;</p>

<p>
    <input type="button" name="btnAdd" id="btnAdd" value="Add a value" onClick="chapter05()" />
</p>

这是脚本:

    var list = document.getElementsByClassName('ch5')[0];

var todo = document.getElementById('txtAdd').value;
var entry = document.createElement('li');
entry.appendChild(document.createTextNode(todo));
list.appendChild(entry);

这是 CSS:

    .hiP {
color: red;
    }

    .medP {
        color: blue;
    }

    .lowP {
        color: green;
    }

    .ch5 {
        padding-left: 30px;
    }

我一直在尝试完成的是,如果您在要放入列表的文本框中键入内容并单击优先级单选按钮,则放入列表中的任何内容都会显示为红色、蓝色或绿色,具体取决于优先(红色为高,蓝色为中,绿色为低)。我这辈子都想不通。

【问题讨论】:

    标签: javascript html css radio-button


    【解决方案1】:

    您可以使用颜色类值创建一个对象,循环遍历按钮以找到选定的对象并使用相应的值设置项目颜色:

    function chapter05() {
      var list = document.getElementsByClassName('ch5')[0];
      btn_colors = {
        'hi': 'hiP',
        'med': 'medP',
        'low': 'lowP'
      }
      radios = document.getElementsByName('rgPrior');
    
      for (var i = 0, length = radios.length; i < length; i++) {
        if (radios[i].checked) {
          btn_selected_color = (btn_colors[radios[i].value]);
          break;
        }
      }
      var todo = document.getElementById('txtAdd').value;
      var entry = document.createElement('li');
      entry.className = btn_selected_color;
      entry.appendChild(document.createTextNode(todo));
      list.appendChild(entry);
    }
    .hiP {
      color: red;
    }
    
    .medP {
      color: blue;
    }
    
    .lowP {
      color: green;
    }
    
    .ch5 {
      padding-left: 30px;
    }
    <p style="">A to-do list</p>
    
    <ol class="ch5">
    
    </ol>
    
    <p>&nbsp;</p>
    <p>
      <label for="txtAdd">New thing to do:</label>
      <input name="txtAdd" type="text" id="txtAdd" size="50" maxlength="50" />
    </p>
    <p>Set Priority</p>
    <p>
      <label>
            <input type="radio" name="rgPrior" value="hi" id="rgPrior_0"/>
            High</label>
      <br/>
      <label>
            <input type="radio" name="rgPrior" value="med" id="rgPrior_1"/>
            Medium</label>
      <br/>
      <label>
            <input type="radio" name="rgPrior" value="low" id="rgPrior_2"/>
            Low</label>
      <br/>
    </p>
    <p>&nbsp;</p>
    
    <p>
      <input type="button" name="btnAdd" id="btnAdd" value="Add a value" onClick="chapter05()" />
    </p>

    【讨论】:

    猜你喜欢
    • 2017-12-05
    • 2015-01-15
    • 1970-01-01
    • 2012-03-14
    • 2020-07-11
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多