データベースからテーブルの形式でデータを取得するjspファイルがあります。私のjspは以下の通りです:
<%
ResultSet rs1 = stmt.executeQuery("select * from book where category='Fiction'");
%>
<h1><font size="3">
<form name="f1" id="f1" method="post">
<table border="1">
<tr>
<th>Name of the Book</th>
<th>Author</th>
<th>ISBN</th>
<th>Price</th>
<th>Publication</th>
<th>Description</th>
</tr>
<%
while(rs1.next())
{
%>
<tr>
<td id="bname"><%= rs1.getString(1) %></td>
<td id="aname"><%= rs1.getString(2) %></td>
<td id="isbn"><%= rs1.getString(3) %></td>
<td id="price"><%= rs1.getString(4) %></td>
<td id="pname"><%= rs1.getString(5) %></td>
<td id="desc"><%= rs1.getString(7) %></td>
<td><input type="button" value="Add to Cart" onclick="cart()"></input></td>
</tr>
<%
}
%>
これの出力は行数になります。「カートに追加」ボタンをクリックすると、セル要素がJavaScript関数に渡され、JS関数を介してサーブレットに渡されます。
ここで直面している問題は、すべての 'td' の ID が同じであるため、テーブルの 2 行目をクリックしても、最初の行の要素のみが JavaScript 関数に渡されることです。
ここに私のJavaScript関数があります:
function cart()
{
var bname = window.document.getElementById("bname").textContent;
var isbn = window.document.getElementById("isbn").textContent;
var price = window.document.getElementById("price").textContent;
alert(bname);
alert(isbn);
alert(price);
}
上記の「アラート」は、2 行目にあるボタンをクリックしても、最初の行の値のみを表示しています。
オンラインで非常に多くの代替案を試しましたが、問題を解決できませんでした。