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

 for(var n=0;n<3;n++){
            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;
            cell2.attachEvent("onclick",function(){ alert("inside test")
            var rows= cell2.parentNode;
            alert(rows.rowIndex); });

            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>

This is the code I tried out, the rows are created using a for condition. Problem is I always get the index of last row created irrespective of whichever row I click. Can anybody help me what the problem is?

alditis
  • 4,633
  • 3
  • 49
  • 76
nithin
  • 387
  • 3
  • 9
  • 20

1 Answers1

0

You can always get the index of the row you click by using "row.rowIndex" attribute

<HTML>
<HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">
        window.onload  = function(){
            var table = document.getElementsByTagName('table')[0];
            for(var j=0; j<5; j++){
                var row = table.insertRow(table.rows.length);
                var cell1 = row.insertCell(0);
                cell1.innerHTML = 'getIndex';
                var cell2 = row.insertCell(1);
                cell2.innerHTML = 'remove';
            }

            var rows = document.getElementsByTagName('tr');
            for(var i=0; i<rows.length; i++){
                rows[i].cells[0].onclick = function(){
                    alert(this.parentElement.rowIndex);
                }
                rows[i].cells[1].onclick = function(){
                    this.parentElement.parentElement.deleteRow(this.parentElement.rowIndex);
                }
            }
        }
    </SCRIPT>
</HEAD>
<BODY>
    <table>
    </table>
</BODY>
</HTML>