爱生活爱小疯

导航

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;
                    }
                }
            }
    }

 

posted on 2016-03-04 11:29  刘思嘉  阅读(15137)  评论(0编辑  收藏  举报