动态创建的HTML ID,比较时如何使用eval?

时间:2019-09-10 13:47:45

标签: javascript

我在函数listInPorts中创建了一些动态ID复选框,并尝试在函数eval中使用checkports进行比较以查看是否已选中它们。我可能会误解了如何使用eval,因为它不会通过。

function listInPorts() {
  console.log("listInPorts()");
  var x = 0; portstring = "<table border='1' bgcolor=cyan width='199'>";
  inputs = mid.inputs.values();
  //List ports in and out
  Lportin = mid.inputs.values();
  for (listinput = Lportin.next(); listinput && !listinput.done;
    listinput = Lportin.next()) {
    var deviceIn = listinput.value.name;
    var optin = document.createElement("option");
    optin.text = deviceIn;
    //document.getElementById("in_portsel").add(optin);
    portstring = portstring + "<tr><td align=right><b>" + optin.text + "<input 
    id = 'inBox"+x+"' type = 'checkbox' checked > </b></td > </tr> ";
    x++;
  }
  document.getElementById("ports").innerHTML = portstring + "</table>";
}
function checkInPorts(mid) {
  var x = 0;
  inputs = mid.inputs.values();
  for (var input = inputs.next(); input && !input.done; input =
    inputs.next()) {
    if (eval("document.getElementById.('inBox" + x + "').checked") == false) { }
    else if (eval("document.getElementById.('inBox" + x + "').checked") == true) { input.value.onmidimessage = onMIDIMessage; }
    x++;
    //input.value.onmidimessage = onMIDIMessage;
  }
}

如果我只是打开所有端口并且不尝试检查复选框是否被选中,我知道代码可以正常工作。因此,必须eval将字符串转换/创建为无效的变量。

1 个答案:

答案 0 :(得分:-1)

为什么要使用eval进行基本元素查找?

if (document.getElementById('inBox' + x).checked) {
  console.log(x, "It is checked")
} else {
  console.log(x, "It is not checked")
}