我在函数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
将字符串转换/创建为无效的变量。
答案 0 :(得分:-1)
为什么要使用eval进行基本元素查找?
if (document.getElementById('inBox' + x).checked) {
console.log(x, "It is checked")
} else {
console.log(x, "It is not checked")
}