单击按钮时设置列表元素的优先级颜色

时间:2017-10-08 03:16:23

标签: javascript html css radio-button

所以我的困境是我有一个页面上有一个待办事项列表样式输入,其中有单选按钮,用于确定要执行的操作的优先级。

以下是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;
    }

我一直试图完成的是,如果您在文本框中键入要放入列表中的内容并单击优先级单选按钮,则放入列表中的任何内容都会显示红色,蓝色或绿色取决于优先级(红色为高,蓝色为中,绿色为低)。我不能为我的生活弄清楚这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用颜色类值创建对象,循环按钮以查找所选颜色,并使用相应的值设置项目颜色:

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>