IE6 и 7 не могут обнаружить динамически добавленные флажки в JavaScript - PullRequest
3 голосов
/ 17 июля 2011

У меня есть что-то подобное в моем приложении 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?

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

IE не позволит вам установить атрибут "name" после создания элемента:

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

Однако, если вы сделаете это таким образом, это должно сработать.

изменить & mdash; похоже, что Firefox (начиная с FF4 и, по-видимому, никогда не работает в стандартном режиме), не любит это делать, поэтому вам придется провести некоторый анализ браузера или проверку возможностей, чтобы узнать, работает ли он для создания элемента с таким именем.

0 голосов
/ 17 июля 2011

В тех версиях IE, чтобы создать элемент ввода, вы должны сделать что-то вроде этого:

...