这是我第一次在这里发帖。我希望你理解我的问题!
<script language="JavaScript">
function setVisibility(id, visibility)
{
document.getElementById(id).style.display = visibility;
}
</script>
<% for(cart c: cart) {%>
<td> ......</td>
<td> ......</td>
<td> ......</td>
<td> ......</td>
<td>
<input type=button name=type value='Edit' onclick="setVisibility('DivQTY', 'inline');">
<div id="DivQTY" style="display: none">
<input type="text" name="qty">
<form action="doEditCart.jsp?id=<%= c.getID() %>" method="post">
<input type="submit" value="Save">
</form>
</div>
</td>
<% }%>
这显示一个表格,并在每一行中显示一个“编辑”按钮。
我的问题是,如果我按任意一行中的任何“编辑”按钮,“TextBox”和“Save”按钮只会出现在第一行。
在这次捕捉中,我在第四行按了编辑。 如何在我按下编辑按钮的行中显示TextBox和Save按钮?
谢谢。
答案 0 :(得分:0)
问题出在下面一行id
div
<div id="DivQTY" style="display: none">
元素ID在整个文档中应该是唯一的。为HTML中的每个元素使用不同的动态ID。
HTML 4.01 specification表示ID必须是文档范围内唯一的。
在此处详细了解Two HTML elements with same id attribute: How bad is it really?
答案 1 :(得分:0)
您的for
语句正在创建具有相同<div>
属性的不同id
元素,这是不允许的。
作为解决方案,您可以使用购物车的ID(c.getID()
)作为div ID的一部分:
(...)
<input type=button name=type value='Edit' onclick="setVisibility('DivQTY<%=c.getID()%>', 'inline');">
<div id="DivQTY<%=c.getID()%>" style="display: none">
(...)