如何为动态创建的行分配ID

How to assign ID to the dynamically created rows

本文关键字:分配 ID 创建 动态      更新时间:2023-09-26

我正在javascript中动态创建行。由于所有行中的控件都有相同的id,我需要在创建该控件时为其分配id。有人能帮我如何为该控件分配id吗这是我的代码

function AddNewRow(tblrowdetails) {
    var table  =   $("tblrowdetails"); //getting the table id
    var rowCount = table.rows.length; 
        var row = table.insertRow(rowCount);
        var colCount = table.rows[0].cells.length;
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[0].cells[i].innerHTML;
            switch(newcell.childNodes[0].type) {
                case "text":
                        newcell.childNodes[0].value = "";
                        break;
                case "checkbox":
                        newcell.childNodes[0].checked = false;
                        break;
                case "select-one":
                        newcell.childNodes[0].selectedIndex = 0;
                        break;
         }
     }
   }
}    

我需要在哪里为控件分配id以及如何分配,请帮助我

其中一种方法可能是

...
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[0].cells[i].innerHTML;
            // assign id in the form of rX_cY - X,Y being row & column numbers
            $(newcell.childNodes[0]).attr('id', 'r' + rowCount.ToString() + '_c' + i.ToString());
            switch(newcell.childNodes[0].type) {
...

您可以为每一行添加一个id,为每个控件添加一个类,这样您就可以使用以下查询访问给定的控件:#myRow.mycontrol.

您可以在POJS中非常简单地做到这一点:

var table = document.getElementById('tblrowdetails');
var newRow = table.rows[0].cloneNode(true);
var newCells = newRow.cells;  // Use DOM cells collection
/*
  fix the ids and values of controls here
  using your case statement
*/
table.tBodies[0].appendChild(newRow); // Must append to a tBody to keep IE happy

假设"control"是指添加到表单元格中的输入,我想newcell.childNodes[0].id = '[someid]'应该这样做吗?如果你想分配一个随机id,可以使用之类的东西

newcell.childNodes[0].id = 'c' + (Math.floor(Math.random()*10000)).toString(16)