javascript - IE6 和 7 无法检测到 javascript 中动态添加的复选框

标签 javascript forms dynamic internet-explorer-6 element

我的 AJAX 应用程序中有这样的东西:

      <html>
<head>
    <script type="text/javascript">
        var counter=4;
        function newcheckbox() {
            var newrow=document.getElementById('tabl').insertRow(0);
            var cell1=newrow.insertCell(0);
            var n=document.createElement("input");
            n.type="checkbox";
            n.name="item";
            cell1.appendChild(n);
            var cell2=newrow.insertCell(1);
            cell2.innerHTML=counter;
            counter++;
        }
        function listlength() {
            alert(document.list.item.length);
        }
    </script>
</head>
<body>
    <button onclick="newcheckbox();">new checkbox</button>
    <button onclick="listlength();">alert checkbox list length</button>
    <form name="list">
    <table id="tabl">
        <tr>
            <td><input type="checkbox" name="item"/></td><td>3</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="item"/></td><td>2</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="item"/></td><td>1</td>
        </tr>
    </form>
</body>
      </html>

如您所见,如果单击新的复选框按钮,则会添加新的复选框。还有另一个按钮可以提醒复选框列表的长度。 在 Firefox 中,您会得到列表的更新长度,但在 IE 6 和 7 中,它表示长度仍为 3。 您如何解决 IE 中的这个问题?

最佳答案

IE 不允许您在创建元素后设置“名称”属性:

var n=document.createElement("<input name='item'>");

但是,如果您这样做,它应该会起作用。

编辑 — 看起来 Firefox(从 FF4 开始,显然从未在标准模式下)不喜欢这样做,所以您必须进行一些浏览器嗅探或功能测试才能知道它是否用于创建具有这样名称的元素。

关于javascript - IE6 和 7 无法检测到 javascript 中动态添加的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720238/

相关文章:

ios - 如何根据文本使 UICollectioncell 宽度动态

用 C 创建动态矩阵

JavaScript 或 jquery 错误

Jquery根据输入值改变div背景

javascript - jQuery 表单验证器 : need to submit twice

ios - uitableview 自动调整大小中图像和单元格的动态高度

javascript - 如何编写脚本来点击某些图片链接?

javascript - javascript中未定义的类型?

javascript - 使用自定义协议(protocol)或 url 方案时,window.open() 方法会在 Google Chrome 中打开一个空白页面

css - HTML - 当 CSS 启用时无法将光标移动到文本区域内