我正在尝试通过单击按钮动态地将行添加到 HTML 表中。
我的表格有一列包含 HTML5 datalist 元素。最初使用默认第一行加载页面时,我可以在 datalist 中看到下拉值。
但是对于按钮 datalist 添加的所有新行都不起作用。下面是我的表格和添加行的 JavaScript。JavaScript 中的 innerHTML 似乎不适用于 IE 中的 datalist 元素。是否有任何解决方法可以让 innerHTML 为 HTML5 元素工作?
HTML:
<input type="button" value="Add Row" onclick="javascript:addRow('dataTable')">
<input type="button" value="Delete Row" onclick="javascript:deleteRow('dataTable')">
<table id="dataTable" name="dataTable" border="1" WIDTH="1240">
<col width="40">
<col width="100">
<tr>
<th>Select</th>
<th>Column4</th>
</tr>
<tbody>
<tr>
<td WIDTH="40">
<input type="checkbox" name="Select">
</td>
<td WIDTH="100">
<input type='text' list='Column4' id='element_10' style='display:table-cell; width:100%'>
<datalist id='Column4'>
<!--[if !IE]><!-->
<select>
<!--<![endif]-->
<option label='' value=''>
<option label='' value='Datalist1'>
<option label='' value='Datalist2'>
<!--[if !IE]><!-->
</select>
<!--<![endif]-->
</datalist>
<script>
$(document).ready(function() {
$('input[list]').datalist();
});
</script>
</td>
</tr>
</tbody>
</table>
JavaScript:
function addRow(tableID){
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var colCount=table.rows[1].cells.length;
for(var i=0;i<colCount;i++)
{
var newcell=row.insertCell(i);
newcell.innerHTML=table.rows[1].cells[i].innerHTML;
switch(newcell.childNodes[0].type)
{
case"text":newcell.childNodes[0].value="";break;
case"checkbox":newcell.childNodes[0].checked=false;break;
case"select-one":newcell.childNodes[0].selectedIndex=0;break;
}
}
}
function deleteRow(tableID)
{
try{
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
for(var i=0;i<rowCount;i++)
{
var row=table.rows[i];
var chkbox=row.cells[0].childNodes[0];
if(null!=chkbox&&true==chkbox.checked)
{
if(rowCount<=1)
{
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);rowCount--;i--;}
}
}
catch(e)
{
alert(e);
}
}