Dynamic creation of table with DOM

前端 未结 9 1040
面向向阳花
面向向阳花 2020-11-28 06:07

Can someone tell me what\'s wrong with this code? I want to create a table with 2 columns and 3 rows, and in the cells I want Text1 and Text2 on every row. This code creates

相关标签:
9条回答
  • 2020-11-28 06:52

    You must create td and text nodes within loop. Your code creates only 2 td, so only 2 are visible. Example:

    var table = document.createElement('table');
    for (var i = 1; i < 4; i++){
        var tr = document.createElement('tr');   
    
        var td1 = document.createElement('td');
        var td2 = document.createElement('td');
    
        var text1 = document.createTextNode('Text1');
        var text2 = document.createTextNode('Text2');
    
        td1.appendChild(text1);
        td2.appendChild(text2);
        tr.appendChild(td1);
        tr.appendChild(td2);
    
        table.appendChild(tr);
    }
    document.body.appendChild(table);
    
    0 讨论(0)
  • 2020-11-28 06:52
    var html = "";
        for (var i = 0; i < data.length; i++){
        html +="<tr>"+
                "<td>"+ (i+1) + "</td>"+
                "<td>"+ data[i].name + "</td>"+
                "<td>"+ data[i].number + "</td>"+
                "<td>"+ data[i].city + "</td>"+
                "<td>"+ data[i].hobby + "</td>"+
                "<td>"+ data[i].birthdate + "</td>"+"<td><button data-arrayIndex='"+ i +"' onclick='editData(this)'>Edit</button><button data-arrayIndex='"+ i +"' onclick='deleteData()'>Delete</button></td>"+"</tr>";
    }
    $("#tableHtml").html(html);
    
    0 讨论(0)
  • 2020-11-28 06:53

    In my example, serial number is managed according to the actions taken on each row using css. I used a form inside each row, and when new row created then the form will get reset.

    /*auto increment/decrement the sr.no.*/
    body {
        counter-reset: section;
    }
    
    i.srno {
        counter-reset: subsection;
    }
    
    i.srno:before {
        counter-increment: section;
        content: counter(section);
    }
    /****/
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type='text/javascript'>
        $(document).ready(function () {
            $('#POITable').on('change', 'select.search_type', function (e) {
                var selectedval = $(this).val();
                $(this).closest('td').next().html(selectedval);
            });
        });
    </script>
    <table id="POITable" border="1">
        <tr>
            <th>Sl No</th>
            <th>Name</th>
            <th>Your Name</th>
            <th>Number</th>
            <th>Input</th>
            <th>Chars</th>
            <th>Action</th>
        </tr>
        <tr>
            <td><i class="srno"></i></td>
            <td>
                <select class="search_type" name="select_one">
                    <option value="">Select</option>
                    <option value="abc">abc</option>
                    <option value="def">def</option>
                    <option value="xyz">xyz</option>
                </select>
            </td>
            <td></td>
            <td>
                <select name="select_two" >
                    <option value="">Select</option>
                    <option value="123">123</option>
                    <option value="456">456</option>
                    <option value="789">789</option>
                </select>
            </td>
    
            <td><input type="text" size="8"/></td>
            <td>
                <select name="search_three[]" >
                    <option value="">Select</option>
                    <option value="one">1</option>
                    <option value="two">2</option>
                    <option value="three">3</option>
                </select>
            </td>
            <td><button type="button" onclick="deleteRow(this)">-</button><button type="button" onclick="insRow()">+</button></td>
        </tr>
    </table>
    
    <script type='text/javascript'>
        function deleteRow(row)
        {
            var i = row.parentNode.parentNode.rowIndex;
            document.getElementById('POITable').deleteRow(i);
        }
        function insRow()
        {
            var x = document.getElementById('POITable');
            var new_row = x.rows[1].cloneNode(true);
            var len = x.rows.length;
            //new_row.cells[0].innerHTML = len; //auto increment the srno
            var inp1 = new_row.cells[1].getElementsByTagName('select')[0];
            inp1.id += len;
            inp1.value = '';
            new_row.cells[2].innerHTML = '';
            new_row.cells[4].getElementsByTagName('input')[0].value = "";
            x.appendChild(new_row);
        }
    </script>

    Hope this helps.

    0 讨论(0)
提交回复
热议问题