添加自定义列时,如何为每个单元格提供唯一ID?

时间:2014-08-05 09:07:49

标签: javascript jquery

我编写了以下代码来向我的表中添加自定义列。但我想为这些列中的每个单元格添加一个唯一的ID。格式应为a(列号)(单元格号>) 例如: - 对于第4列: - a41,a42,a43,........ 所以,任何人都可以告诉我如何做到这一点。谢谢!

$(document).ready(function () 
{
     var myform = $('#myform'),
         iter = 4;

     $('#btnAddCol').click(function () {
         myform.find('tr').each(function(){
           var trow = $(this);
           var colName = $("#txtText").val();
           if (colName!="")
           {
             if(trow.index() === 0){
                 //trow.append('<td>'+iter+'</td>');
                 $(this).find('td').eq(5).after('<td>'+colName+iter+'</td>');
             }else{
                 //trow.append('<td><input type="text" name="al'+iter+'"/></td>');
                 $(this).find('td').eq(5).after('<td><input type="text" id="a'+iter+'" name="a'+iter+'"/></td>');
             }
            } 
         });
         iter += 1;
     });
 });

3 个答案:

答案 0 :(得分:1)

您似乎有修改表格内容的代码(添加单元格),这相当强烈地反对向每个单元格添加id,或者至少根据其行/列位置添加{1}}在向表中添加单元格时,必须更改

但是如果你真的想这样做,在修改之后,运行一个嵌套循环并使用传递到id的索引分配each,覆盖它们之前的任何id有过:

myform.find("tr").each(function(row) {
    $(this).find("td").each(function(col) {
        this.id = "a" + row + col;
    });
});

(请注意,这假定没有嵌套表。)

答案 1 :(得分:0)

试试这个

if(trow.index() === 0){
   //trow.append('<td>'+iter+'</td>');
   $(this).find('td').eq(5).after('<td id="a'+column_no+cell_no+'">'+colName+iter+'</td>');
}else{
   //trow.append('<td><input type="text" name="al'+iter+'"/></td>');
   $(this).find('td').eq(5).after('<td id="a'+column_no+cell_no+'"><input type="text" id="a'+iter+'" name="a'+iter+'"/></td>');
}

你只需要定义并迭代column_no和cell_no变量

答案 2 :(得分:0)

当所有其他单元格编号一致时(例如使用值为rXcX的data-attribute),您可以使用以下内容:

function addColumn(){
   $('table tr').each( 
          function(i, row) {
              var nwcell = $('<td>'), previdx;
              $(row).append(nwcell);
              previdx = nwcell.prev('td').attr('data-cellindex');
              nwcell.attr('data-cellindex',
                          previdx.substr(0,previdx.indexOf('c')+1)
                          + (+previdx.substr(-previdx.indexOf('c'))+1));
          });
}

在此jsFiddle

中完成了工作