我正在生成一个动态表,向其添加一行,然后为这些单元格中添加的元素分配一些属性。
除了复选框设置或重置,一切正常。在函数display_start_time()
中,命令
document.getElementById(domain).checked = false;
不适用于动态生成的行。当我向这个函数抛出静态表时,它可以正常工作。问题可能出在setAttribute函数(使用IE10,Windows 8),因为我尝试在线浏览许多解决方案,但无法在这个解决方案中取得突破。提供的解决方案之一是转换到jquery,但这对我来说几乎没有问题。
调用函数Report
,单击按钮以创建新行。
display_time(domain,range);
工作正常。
请指导我。脚本从这里开始
function display_start_time(domain, range, user_id, process_id, process_name)
{
if(!document.getElementById(user_id).innerHTML)
{
alert("Please select the server");
document.getElementById(domain).checked = false;
}
else
{
question= confirm("Have you STARTED the " + domain + " of " + process_id + " ? ");
{
if(question)
display_time(domain,range);
else
{
document.getElementById(domain).checked = false;
}
}
}
}
function report(set_id,btn_id)
{
question= confirm("Has the error occurred ?");
if(question)
{
new_table = document.getElementById("isolop_table");
row = new_table.insertRow();
cell_1 = row.insertCell(0);
cell_2 = row.insertCell(1);
cell_3 = row.insertCell(2);
cell_4 = row.insertCell(3);
cell_5 = row.insertCell(4);
cell_6 = row.insertCell(5);
cell_7 = row.insertCell(6);
cell_8 = row.insertCell(7);
cell_9 = row.insertCell(8);
// Inserting Data in Isolop Table Rows
cell_1.innerHTML = serial;
cell_2.innerHTML = document.getElementById(set_id).innerHTML;
cell_2.setAttribute("id", "Int" + serial);
cell_4.innerHTML = cell_5.id;
cell_4.setAttribute("id","user_id"+serial);
cell_7.innerHTML = "Start Time";
cell_7.setAttribute("id","disp_start"+serial);
cell_8.innerHTML = "End Time";
cell_8.setAttribute("id","disp_end"+serial);
cell_5.innerHTML = "<input type='checkbox' ></input>";
cell_5.setAttribute("id", "INT"+serial);
// cell_5.setAttribute("checked", 'true');
cell_5.setAttribute('onclick',"display_start_time(cell_5.id,cell_7.id,cell_4.id,cell_2.innerHTML,'ISOLOP')");
cell_4.innerHTML = cell_5.id;
cell_6.innerHTML = "<input type='checkbox'></input>";
cell_6.setAttribute("id", "end"+serial);
cell_6.setAttribute('onclick',"display_end_time(cell_6.id,cell_8.id,cell_5.id,cell_2.innerHTML,'ISOLOP');");
cell_9.innerHTML = " <button type='button' onclick=report('Int1');>Report Error</button>";
document.getElementById(btn_id).disabled = true;
document.getElementById(btn_id).onclick = false;
return serial++;
}
}
答案 0 :(得分:0)
我认为问题来自这一行:
cell_5.setAttribute('onclick',"display_start_time(cell_5.id,cell_7.id,cell_4.id,cell_2.innerHTML,'ISOLOP')");
当您将onclick处理程序设置为字符串时,它将在页面的全局上下文中执行,而不是在您设置处理程序的上下文中执行。如果在全局上下文中不存在cell_5,cell_7等,则该函数将失败。
尝试使用addEventListener或使用匿名函数设置onclick作为事件处理程序。 cell_#变量将在其范围内捕获,因此它应该像您期望的那样运行。
cell_5.addEventListener('click', function() {
display_start_time(cell_5.id, cell_7.id, cell_4.id, cell_2.innerHTML, 'ISOLOP');
}, false);
OR
cell_5.onclick = function() {
display_start_time(cell_5.id, cell_7.id, cell_4.id, cell_2.innerHTML, 'ISOLOP');
}
同样,您应该对cell_6上的单击处理程序执行此操作。