0

我在我的应用程序中显示我的数据库中的内容列表。我从数据库中获取记录并遍历前端的 for-each 循环并显示内容。当我尝试单击任何项​​目时,它只显示列表中的第一项。下面是我的代码。我该如何克服这个问题?

function userselection()
        {
            var selecteduser1=document.getElementById("lbl_user").innerHTML;
            document.writeln(selecteduser1);
        }

<div style="border: 2px solid activeborder;width:300px;height: 400px;border-radius: 5px;">
                    <ul id="userlist" style="text-align: left;">
                        <c:forEach items="${list_onlineusers}" var="userslist">
                            <li  id="li_user" style="list-style-image: url(images/online.png);cursor: pointer;height: 25px;margin-left: 0;margin-right: 10%;margin-top: 0.5em;margin-bottom: 7%;" value="${userslist}">
                                <label onmousedown="userselection()" id="lbl_user" style="font-family:Trebuchet MS,Times,serif;color: black;font-size: 16px;cursor: pointer;">
                                    ${userslist}
                                </label>
                            </li>
                        </c:forEach>
                    </ul>
                </div>
4

4 回答 4

1

ID的定义和使用

id 属性为 HTML 元素指定一个唯一的 id(该值在 HTML 文档中必须是唯一的)。 id 属性最常用于指向样式表中的样式,并由 JavaScript(通过 HTML DOM)来操作具有特定 id 的元素。

您对列表中的所有项目使用相同的 id。您必须<c:forEach>稍微更改循环才能将循环计数添加到 id。所以,每个项目都有一个唯一的ID。请更改您的代码,如下所示

<c:forEach items="${list_onlineusers}" var="userslist" varStatus="count">
   <li  id="li_user${count.index}" value="${userslist}">
        <label onmousedown="userselection()" id="lbl_user${count.index}">
          ${userslist}
         </label>
   </li>
</c:forEach>

上述更改将为每个项目设置一个唯一的 id。现在,您可以将在注册事件侦听器时单击的项目的唯一 ID 传递给文档,并做任何您想做的事情。首先,您需要确保文档中的每个元素都有唯一的 id。

注意:我已从您的 HTML 中删除了内联 CSS 样式属性以提高可读性

于 2014-03-25T07:07:46.450 回答
0

嗨,您可以尝试不使用 Java 脚本。

  List<String> list = (List<String>) s;
 {
    %>
<tr>
<td>MobileCode</td>
<td>Company</td>
<td>Camera</td>

<%
for (String p : list) {
%>
<tr>
<td><%=p.getMn()%></td>
<td><%=p.getCmnm()%></td>
<td><%=p.getCmr()%></td>

<td><a href="xyz`enter code here.jsp?mn=<%=p.getMn()%>"
onClick="return confirm('Are you sure for Delete')">Delete</a></td>
</tr>
<%
}
}
}
enter code here

}
%>
</table>

像这样。

于 2014-03-25T07:13:09.223 回答
0

您正在为所有选择使用 ID 'lbl_user';由于所有项目都共享相同的 ID,当

var selecteduser1=document.getElementById("lbl_user").innerHTML;

被调用时,它只获取第一个可用的 ID。尝试为每个项目分配一个唯一的 ID。

或者,在函数中,只需执行以下操作:

function userselection(){
     var selecteduser1=this.innerHTML;
     document.writeln(selecteduser1);
}
于 2014-03-25T07:05:24.927 回答
0

您的循环是错误的,因为您的循环将在视图上创建多个 id="li_user" & id="lbl_user" id,这将不是唯一的。先解决这个问题。

于 2014-03-25T07:05:50.040 回答