隐藏的div不会出现在我希望它出现的地方

时间:2014-05-26 15:34:52

标签: java html jsp visibility

这是我第一次在这里发帖。我希望你理解我的问题!

    <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按钮?

谢谢。

2 个答案:

答案 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">
(...)