Internet Explorer Javascript / Dom Object проблема с добавлением строк - PullRequest
1 голос
/ 12 июня 2011

Вот мой код Javascript:

function generate(choice)
{
    if(choice==1)
    {

        charge++;


        var new_row=document.createElement("tr");
        var name="row"+charge;      
        new_row.setAttribute("name",name);
        new_row.setAttribute("id",name);

        var col1=document.createElement("td");
        var col2=document.createElement("td");
        var col3=document.createElement("td");
        var col4=document.createElement("td");

        col1.setAttribute("width","205");
        col2.setAttribute("width","191");
        col3.setAttribute("width","182");       
        col4.setAttribute("width","127");

        var list1=document.getElementById("rep0").cloneNode(true);
        id="rep"+charge;

        list1.setAttribute("id",id);

        var list2=document.getElementById("item0").cloneNode(true);
        name="items[]";
        list2.setAttribute("name",name);
        id="item"+charge;
        list2.setAttribute("id",id);
        list2.setAttribute("onChange","match_row(this.id);");


//      clone_nodes(list2,"item0");

        var text=document.createElement("input");
        name="minutes[]";
        text.setAttribute("name",name);
        text.setAttribute("value","15");
        id="minutes"+charge;
        text.setAttribute("id",id);
        text.setAttribute("type","text");

        var text2=document.createElement("input");
        name="charges[]";
        text2.setAttribute("name",name);
        text2.setAttribute("value","28.00");
        id="charges"+charge;
        text2.setAttribute("id",id);
        text2.setAttribute("type","text");
        //text2.setAttribute("onChange","charge_calculator();");

        col1.appendChild(list1);
        col2.appendChild(list2);
        col3.appendChild(text);
        col4.appendChild(text2);

        new_row.appendChild(col1);
        new_row.appendChild(col2);
        new_row.appendChild(col3);
        new_row.appendChild(col4);

        charges1=document.getElementById("charges");
        charges1.appendChild(new_row);

        final_charge=charge;


    }
    else if(choice==2)
    {

        payment++;
        var new_row2=document.createElement("tr");


        var col11=document.createElement("td");
        var col22=document.createElement("td");
        var col33=document.createElement("td");

        col11.setAttribute("width","205");
        col22.setAttribute("width","206");
        col33.setAttribute("width","297");      


        var list11=document.createElement("select");
        name="payment_type[]";
        list11.setAttribute("name",name);
        id="payment_type"+payment;
        list11.setAttribute("id",id);
        list11.setAttribute("onChange","set_payment_type(this.id);");
        clone_nodes(list11,"payment_type0");

        var text1=document.createElement("input");
        text1.setAttribute("type","text");
        name="amount[]";
        text1.setAttribute("name",name);
        id="amount"+payment;
        text1.setAttribute("id",id);


        var list22=document.createElement("select");
        name="account[]";
        list22.setAttribute("name",name);
        id="account"+payment;
        list22.setAttribute("id",id);
        list22.setAttribute("onChange","correspond2(this.id);");
        clone_nodes(list22,"account0");


        col11.appendChild(list11);
        col22.appendChild(text1);
        col33.appendChild(list22);

        new_row2.appendChild(col11);
        new_row2.appendChild(col22);
        new_row2.appendChild(col33);


        charges2=document.getElementById("payments");
        charges2.appendChild(new_row2);
        final_payment=payment;

    }

}

А вот код кнопки HTML, с которым я звонюКроме Internet Explorer, пожалуйста, помогите мне, я застрял.У меня тоже есть тренировки для IE.

Ответы [ 3 ]

3 голосов
/ 12 июня 2011

Для вашего же здоровья используйте такую ​​библиотеку, как jQuery , чтобы достичь такого рода вещей.

1 голос
/ 12 июня 2011

Пожалуйста, не используйте метод appendChild для добавления строк в таблицу или ячеек в строку таблицы.Таким образом, вы избежите необходимости явного создания элемента TBODY, добавления его в таблицу, а затем создания и добавления элементов TR к этому TBODY.

Существуют стандартные методы DOM, специально предназначенные для этого использования.А именно:

1.) var newRow = myTable.insertRow(index)
Вставляет и возвращает новую пустую строку (элемент TR) по указанному индексу.

2.) myTable.deleteRow(index)
Удаляетстрока с указанным индексом.

3.) var newCell = myRow.insertCell(index)
Вставляет и возвращает новую пустую ячейку (элемент TD) с заданным индексом.

4.) myRow.deleteCell(index)
Удаляет ячейку с заданным индексом.

Все эти методы обычно выдают ошибку, если аргумент индекса находится вне диапазона.Однако в некоторых браузерах, таких как IE8, индекс является необязательным, и если он пропущен, ячейка или строка будут вставлены или удалены в конце родительского элемента.

0 голосов
/ 12 июня 2011

Ваш код не очень понятен, но я думаю, вы добавите элементы tr в таблицу.Но вы не можете добавить tr непосредственно к таблице в ie.Вам нужно сначала создать элемент tbody, добавить его в таблицу, а затем добавить свой tr в элемент tbody.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...