119

我在request对象中设置了一个值,如下所示,

String[] categoriesList=null;
categoriesList = engine.getCategoryNamesArray();
request.setAttribute("categoriesList", categoriesList );

这就是我在jsp页面中迭代的方式

<% if(request.getAttribute("categoriesList") != null) { %>
<c:forEach var="categoryName" items="${categoriesList}">
   <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
</c:forEach>
<% }%>

如何获取每个元素的索引并将其传递给 JavaScript 函数onclick="getCategoryIndex()"

4

5 回答 5

256

使用varStatus获取索引 c:forEach varStatus 属性

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>
于 2013-09-16T10:41:45.377 回答
22

我遇到了类似的问题。经过研究,我了解到我们对varStatus="loop". 它可以使用基于零的索引或基于一的索引:

  • 使用${loop.index}0 基本索引
  • 使用${loop.count}1 个基本索引

例如 :

<c:forEach var="currentImage" items="${cityBannerImages}" varStatus="loop">
<picture>
   <source srcset="${currentImage}" media="(min-width: 1000px)"></source>
   <source srcset="${cityMobileImages[loop.count]}" media="(min-width:600px)"></source>
   <img srcset="${cityMobileImages[loop.count]}" alt=""></img>
</picture>
</c:forEach>

有关更多信息,请查看此链接

于 2016-06-01T09:38:08.617 回答
14

您可以varStatus像这样使用属性:-

<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">

myIndex.index将为您提供索引。这myIndex是一个LoopTagStatus对象。

因此,您可以将其发送到您的 javascript 方法,如下所示:-

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>
于 2013-09-16T10:42:59.813 回答
1

这对我有用:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
于 2019-08-05T19:17:43.197 回答
0
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

上面的行给了我一个错误。所以我用下面的方式写下来,这对我来说很好。

<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>

也许其他人可能会遇到同样的错误。看看这些家伙!

于 2016-12-22T08:13:17.817 回答