0

我尝试从生成的表代码中为每个输入标签添加唯一 ID。演示 我想要这样的代码:

<table>
<tbody>
<tr>
<td class="tableCell">
<input id="1"> </input>
</td>
<td class="tableCell">
<input id="2"> </input>
</td>
</tr>
<tr>
<td class="tableCell">
<input id="3"> </input>
</td>
<td class="tableCell">
<input id="4"> </input>
</td>
</tr>
</tbody>
</table>

反而

<table>
<tbody>
<tr>
<td class="tableCell">
<input>
</td>
<td class="tableCell">
<input>
</td>
</tr>
<tr>
<td class="tableCell">
<input>
</td>
<td class="tableCell">
<input>
</td>
</tr>
</tbody>
</table>

生成代码的函数:

function createDynamicTable(tbody, rows, cols) {
    if (tbody == null || tbody.length < 1) return;
    for (var r = 1; r <= rows; r++) {
        var trow = $("<tr>");
        for (var c = 1; c <= cols; c++) {
            var input = $("<input />");
            $("<td>").addClass("tableCell").append(input).appendTo(trow);
        }
        trow.appendTo(tbody);
    }
}

createDynamicTable($("tbody"), 2, 2);

如何进行更改以将 uniq id 插入每个输入标签?

4

2 回答 2

2

函数外:

var currentId = 0;

在您的功能中:

var input = $("<input />", {id: 'inp-' + ++currentId});

替换inp-为您喜欢的任何内容,但 ID 不能以数字开头。

于 2012-06-02T14:40:43.120 回答
1
for (var c = 1; c <= cols; c++) {
    var input = $("<input />");

    // but don't use only numeric id
    input.attr("id", c);

    // OR
    var input = $("<input />", {id: c});

    $("<td>").addClass("tableCell").append(input).appendTo(trow);

    // better would be
    var input = $("<input />", {id: "id_" + c});

    // OR
    input.attr("id", "id_" + c);

    $("<td>").addClass("tableCell").append(input).appendTo(trow);
}
于 2012-06-02T14:40:34.670 回答