js动态增加html页面元素
问题:
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/javascript"> function AddOrDelModel(modelId){ if(document.getElementById(modelId).checked){ var insertText = "<table><tr><td>"+modelId+"被选中</td></tr></table>"; document.getElementById("insert").innerHTML = document.getElementById("insert").innerHTML+insertText; }else { document.getElementById("insert").innerHTML = document.getElementById("insert").innerHTML.replace("<table><tbody><tr><td>"+modelId+"被选中</td></tr></tbody></table>",""); } } </script> </head> <body> <input id="Checkbox1" type="checkbox" onclick="AddOrDelModel('Checkbox1')" value="checkbox1" name="CheckBox1" /> <input id="Checkbox2" type="checkbox" onclick="AddOrDelModel('Checkbox2')" value="checkbox2" name="CheckBox2" /> <div id="insert"></div> </body>
要实现的功能选中checkbox1、checkbox2界面分别显示添加checkbox1、checkbox2被选中,取消选择则分别移除添加的内容.
使用firefox调试显示在添加table的时候会自动多添加<tbody>标签
现在在firefox和chrome运行没有问题,但是其他的浏览器(ie、搜狗等浏览器)就不行了。
回答:
function AddOrDelModel(modelId){ var insertText = '<table tag=' + modelId + '><tr><td>' + modelId + '被选中</td></tr></table>', insertEl = document.getElementById("insert"); if(document.getElementById(modelId).checked){ insertEl.innerHTML = insertEl.innerHTML + insertText; }else{ var tables = insertEl.getElementsByTagName("table"); for(var i = 0; i < tables.length; i++){ if(tables[i].tag = modelId){ insertEl.removeChild(tables[i]); break; } } } }