如果 checked:false (on/off 按钮),则从数组中填充 li 元素删除重复项并添加值

fill a li element from a array remove duplicates and add values if checked:false (on/off button)

结果是我每次调用这个函数时列表都变大了。我知道我非常接近解决我的问题,但这些天我真的很紧张。任何帮助或评论将不胜感激。

function devicesoff() {
var devices = document.querySelectorAll("[id^='device_']");

for (var i = 0; i < devices.length; i++) {

    if (devices[i].checked === false) {

        var ele = devices[i].name;

        var para = document.getElementById("p");
        var list = document.createElement("li");


        var t = document.createTextNode(ele + "\n");

        list.appendChild(t);
        para.appendChild(list);

    }

}

先清除旧设备,再添加新设备。

function devicesOff() {
  var devices = document.querySelectorAll("[id^='device_']");
  var para = document.getElementById("p");
  para.innerHTML = ""; // clear old devices first

  // add new ones
  for (var i = 0; i < devices.length; i++) {
    if (devices[i].checked === false) {
      var ele = devices[i].name;
      var list = document.createElement("li");

      var t = document.createTextNode(ele + "\n");
      list.appendChild(t);
      para.appendChild(list);
    }

  }
}
<input type="checkbox" id="device_1" name="device_1" />
<input type="checkbox" id="device_2" name="device_2" />
<input type="checkbox" id="device_3" name="device_3" />

<input type="button" value="devicesOff" onclick="devicesOff()" />

<ul id="p">

</ul>