1

これは、行をコピーして行を削除するための私のjavascriptです

function cloneRow()
 {
         var row = document.getElementById("r1"); 
         var table = document.getElementById("t1"); 
         var clone = row.cloneNode(true); 
         clone.id = "newID";
         table.appendChild(clone); 
 }
 function removeRowFromTable()
 {
 var tbl = document.getElementById('div1');
 var lastRow = tbl.rows.length;
 if (lastRow > 1) tbl.deleteRow(lastRow - 1);
 }

これは私のテーブルです:

 <table id="div1" style="display:none">
    <tbody id="t1">
    <tr id="r1"><td>
<form:input path="hostname" value="hostname" onfocus="if(this.value == 'hostname'){this.value =''}" onblur="if(this.value == ''){this.value ='hostname'}" size="30" maxlength="30"/>
<form:input path="directory" value="directory" onfocus="if(this.value == 'directory'){this.value =''}" onblur="if(this.value == ''){this.value ='directory'}" size="15" maxlength="15"/>
<form:input path="username" value="username" onfocus="if(this.value == 'username'){this.value =''}" onblur="if(this.value == ''){this.value ='username'}" size="15" maxlength="15"/>
<form:input path="password" value="password" onfocus="if(this.value == 'password'){this.value =''}" onblur="if(this.value == ''){this.value ='password'}" size="15" maxlength="15"/></td></tr>
    </tbody>
<input type="button" onclick="cloneRow()" value="+" />
<input type="button" onclick="removeRowFromTable();" value="-" />
    </table>

コードは行を動的に追加または削除するように動作しています..しかし、それらが一意のIDで作成されていることをどのように知ることができますか..後で値をデータベースに保存する必要があります

4

2 に答える 2

2

ローカル変数でクロージャーを使用します。

var cloneRow = (function()
{
    var id_num = 0;

    return function ()
    {
        var row = document.getElementById("r1"); 
        var table = document.getElementById("t1"); 
        var clone = row.cloneNode(true); 

        clone.id = "newID" + id_num++;
        table.appendChild(clone); 
    };
}());
于 2012-08-24T15:15:06.233 に答える
0

jquery を使用して最後の ID を取得し (行に昇順で ID が割り当てられている場合)、それに基づいてインクリメントすることもできます。

 var highestId = parseInt($("tr:last").attr("id"));
 clone.id = ++highestId ;
于 2012-08-24T15:27:33.930 に答える