私はjsとjqueryの学習の初期段階にあります。わからない問題で困っています。ユーザー入力を収集する HTML フォームがあります。送信ボタンをクリックすると、ユーザー入力が新しい行としてテーブルに保存されます (「myTable」と呼びましょう)。私はその部分をやり遂げました。しかし、今は myTable の行をクリックしたときに行データを取得したいと考えています。私もそれを持っています。行をクリックするとデータが取得されますが、行をクリックすると同じデータがアラートで複数回取得されます。最初に行をクリックするとアラートが 1 つ表示され、2 回目は 2 つ... というように表示されます。私のエラーを指摘してください。ここに私のhtmlがあります:
<div>label>First Name: </label>
<input id="firstname" type="text" name="first name"/>
<br>
<label>Last Name: </label>
<input id="lastname" type="text" name="last name"/>
<input type ="button" value = "Submit" onclick ="addRow()" >
</div>
<table id="myTable" border=1 onclick="load_row()">
<tr >
<td>
First Name
</td>
<td>
Last Name
</td>
</tr>
</table>
そして、ここに私のjavascriptがあります:この関数は、ユーザー入力を新しい行としてテーブルに追加します:
var addRow = function(){
var firstname = document.getElementById("firstname").value;
var lastname = document.getElementById("lastname").value;
$("#myTable tr:last").after("<tr><td>" + firstname + "</td><td>" + lastname + "</td></tr>" );
};
そして、この関数は、クリックした行の詳細を警告しています。これは私が何か間違ったことをしていると思うところです:
var load_row = function(){
var rows = $("#myTable tr");
rows.click(function() {
var data = new Array();
var cells = $(this).find("td");
cells.each(function(i, cell) {
data.push($(cell).text());
});
alert(data);
});
};