0

私は jQuery を学び、JS Fiddle でアイデアをテストしようとしていますが、脳がフリーズしているようです。

以下のコードは、新しい行を追加するために末尾に「+」があるテーブルの行を表示する必要があります。初めてクリックすると、新しい ID が新しい行に適切に割り当てられます (新しい行で値が未使用の状態にリセットされ、古い行の "+" が "-" に変更されます)。コードを最初に実行した後、 oldID と newID の値が増加し続けない理由がわかりません。

古い最後の子の数値部分として「32」を読み取り、「33」をテーブルに追加して新しい行を作成しますが、その後、最後の子セレクターを使用して id を再計算しても、実際に NEW を選択するようには見えません最後の子。

コードをより良くする方法についての提案は大歓迎ですが、現在のコードに欠けているものを具体的に知りたいと思っています。

ありがとう!

<table>

<tbody id="investigators">
<tr id="investigator.32">

  <td>
    <input name="person.32" id="person.32"
           type="text" value=""
           placeholder="Lastname, Firstname" 
           onfocus="this.select();" />
  </td>

  <td style="text-align:center" id="add_more.32">
    <img src="add_green.svg"
         alt="[+]" title="Add investigator"
         style="height:1em; width:1em;" />
  </td>

</tr>
</tbody>

および Javascript / jQuery コード:

var oldID = parseInt($("#investigators :last-child")
                       .attr("id").split(".")[1]);
var newID = oldID+1;
$("#add_more\\."+oldID).click(function(){
  var $newPI = $("#investigator\\."+oldID).clone(true);
  $newPI.find("#person\\."+oldID)
    .val(null)
    .attr("placeholder","Jungle, George of")
    .attr("name","person."+newID)
    .attr("id",  "person."+newID);
  $newPI.find("#add_more\\."+oldID)
    .attr("id","add_more."+newID);
  $newPI
    .attr("id","investigator."+newID);
  $newPI.appendTo("#investigators");
  $("#add_more\\."+oldID+" :first-child")
    .attr("src","delete_red.svg")
    .attr("alt","[X]")
    .attr("title","Remove investigator");
  oldID = parseInt($("#investigators :last-child")
                       .attr("id").split(".")[1]);
  newID = oldID+1;
});
4

1 に答える 1