【发布时间】:2014-01-31 05:17:28
【问题描述】:
我通过在 div 中设置 innerHTML 来创建一个动态复选框。此复选框上有 onclick 事件。该代码在除 IE8 之外的所有浏览器中都能正常运行。
看起来 IE 在设置 innerHTML 后没有绑定事件。有没有办法重新绑定事件?
下面是innerHTML代码。
<INPUT id=Animal onclick=\"updateHTML();\" name=Control value=Animal type=checkbox uncheckedValue=\"0\" checkedValue=\"1\">
<INPUT id=Food onclick=\"updateHTML();\" name=Control value=Food type=checkbox uncheckedValue=\"0\" checkedValue=\"1\">
下面是完整代码
<HTML>
<HEAD>
<SCRIPT>
function updateHTML()
{
alert('updateHTML');
}
function changeEvent()
{
var innerhtml="\r\n<TBODY id=originalDiv><TR>\r\n<TD title=\"\">\r\n<INPUT id=Animal onclick=\"updateHTML();\" name=Control value=Animal type=checkbox uncheckedValue=\"0\" checkedValue=\"1\">Animal\r\n<INPUT id=Food onclick=\"updateHTML();\" name=Control value=Food type=checkbox uncheckedValue=\"0\" checkedValue=\"1\">Food\r\n</TD></TR></TBODY>";
var originalDiv=document.getElementById('originalDiv');
var temp = originalDiv.ownerDocument.createElement('div');
temp.innerHTML = '<table>' + innerhtml + '</table>';
originalDiv.replaceChild(temp.firstChild, originalDiv.firstChild);
}
</SCRIPT>
</HEAD>
<BODY>
<TABLE>
<TBODY id ="originalDiv">
<TR>
<TD vAlign=middle>
<INPUT id=Bird onclick=\"updateHTML();\" name=Control value=Bird type=checkbox uncheckedValue=\"0\" checkedValue=\"1\">Bird
</TD>
</TR>
</TBODY>
<TBODY id="submit">
<TR>
<TD>
<input type=button value="Submit" onclick="changeEvent()">
</TD>
</TR>
</TBODY>
</TABLE>
<BODY>
【问题讨论】:
-
updateHTML 是做什么的?可以出示一下代码吗?
-
updateHTML 只有一个警报。
-
好的,那么你能显示创建复选框的代码吗?
-
使用
element.onclick = function() {...}而不是使用元素的onclick属性,不显眼地绑定事件会更好。 -
IE8 调试器有没有报错?
标签: javascript html checkbox