невозможно присоединить к ряду, используя дом - PullRequest
0 голосов
/ 02 февраля 2012
function addRow(names,count) {

    deleteRow();
    var table = dataTable;

    for(var i=0;i<count;i++)
    {

         var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell2 = row.insertCell(0);
        cell2.innerHTML = rowCount;

        var cell3 = row.insertCell(1);
        var element2 = document.createElement('tr');
        var element3 = document.createElement('td');
        //element2.type = "text";
        element2.appendChild(element3)
        cell3.appendChild(element2);
        cell3.innerHTML = names[i];
        element3.attachEvent("test()", onclick);

    }
}

это мой пример кода, я не могу прикрепить событие к element2 или element3, кто-нибудь может мне помочь, в чем проблема с этим

это еще один пример, который я опробовал, он содержит полный код ..

<HTML>
<HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">
        function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            var element1 = document.createElement("input");
            element1.type = "checkbox";
            cell1.appendChild(element1);

            var cell2 = row.insertCell(1);
            cell2.innerHTML = rowCount + 1;

            var cell3 = row.insertCell(2);
            var element2 = document.createElement("input");
            element2.type = "text";
            cell3.appendChild(element2);
            element2.attachEvent("onclick",function(){ alert("event triggered"); });


        }

        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    var index = table.rowIndex;
                    alert("index"+index);
                    //table.deleteRow(i);
                    //rowCount--;
                    i--;
                }

            }
            }catch(e) {
                alert(e);
            }
        }

    </SCRIPT>
</HEAD>
<BODY>

    <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

    <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

    <TABLE id="dataTable" width="350px" border="1">
        <TR>
            <TD><INPUT type="checkbox" name="chk"/></TD>
            <TD> 1 </TD>
            <TD> <INPUT type="text" /> </TD>
        </TR>
    </TABLE>

</BODY>
</HTML>

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Логическая и синтаксическая ошибка, вот разбивка.

cell3.appendChild(element2); // appends your element
cell3.innerHTML = names[i]; // deletes element2 and replaces it with names[i]

element2 не существует, потому что вы установили все внутри cell3 равным names[i] после добавления element2.

Вам также необходимо обновить привязку события (IE)

element3.attachEvent("onclick", function(){ /* code */ });
0 голосов
/ 02 февраля 2012

Попробуйте это ..

 element3.onclick = function () {
               test();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...