0

我有一个表,其中每一行包含两个元素:

<table>
<tr><td>A</td><td>B</td></tr>
<tr><td>C</td></tr>
</table>

我正在尝试将带有“D”的单元格附加到最后一行(当前表中已经存在的第二行),但是遇到了困难。

我试图执行:

$("table").children().get(1).append("<td>D</td>");

var elem = $("<td/>", {
    text: 'D'
});

$("table").children().get(1).appendChild(elem);

我得到了错误:

Uncaught Error: NotFoundError: DOM Exception 8 

将 tbody 放在那里也不起作用:

$("table tbody").children().get(1).appendChild(elem);

什么是正确的方法来做到这一点?

我不想仅仅依赖于“最后一个 td”,因为假设我有另一个元素“E”,我希望它自己自动添加到第三行,而不是在末尾添加它作为第三列第 2 行。

4

3 回答 3

2

尝试:

$("table td:last").after("<td>D</td>");

jsFiddle 示例

结构中的结果:

<table>
<tbody><tr><td>A</td><td>B</td></tr>
<tr><td>C</td><td>D</td></tr>
</tbody></table>
于 2013-02-26T01:50:22.237 回答
0

试试这个:

$('<td>D</td>').appendTo('table tr:eq(1)');
于 2013-02-26T01:58:39.757 回答
0

您可以通过从现有字母中查找下一个字母来动态附加。可能您需要根据您的要求进行修改。

HTML

<table>
    <tr>
        <td>A</td>
        <td>B</td>
    </tr>
    <tr>
        <td>C</td>
    </tr>
</table><button type="button" id="addanother" >Add</button>

JS:

$('#addanother').on('click',function(){
    var length=$('table').find('td:last').parent().children().length;
    var text=$('table').find('td:last').text();
     var nextlet=nextLetter(text);
    if(length == 2){
         $('table').find('tr:last').after('<tr><td>'+nextlet+'</td></tr>');
    }else if(length == 1){
           $('table').find('td:last').after('<td>'+nextlet+'</td>');
    }
  });

// To get alphabets from A-Z from a-z
  function nextLetter(s){
return s.replace(/([a-zA-Z])[^a-zA-Z]*$/, function(a){
    var c= a.charCodeAt(0);
    switch(c){
        case 90: return 'A';
        case 122: return 'a';
        default: return String.fromCharCode(++c);
    }
});

}

提琴手:http: //jsfiddle.net/j98H7/1/

于 2013-02-26T05:25:06.910 回答