如何从jstl中的foreach循环获取索引值


106

我在如下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()"

Answers:


233

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

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>

我得到的这个Uncaught ReferenceError: 循环未定义`和+1为您的努力
Java问题

onClick显示的元素
Java Questions

因为varStatus值包含直到循环迭代的值。此后,该值不是有效值。所以只有你有例外。为此,您需要索引
newuser 2013年

我需要知道每个元素的index [location]都在String Array中。
Java Questions

它的工作原理是:),如果我这样做onclick =“ getCategoryIndex($ {loop.index})”“ ...感谢您的帮助
Java Questions

18

我现在面临类似的问题,我了解我们还有更多选择:varStatus =“ loop”,这将是loop将保存lop索引的变量。

它可以用于读取Zeor基本索引或1个基本索引。

${loop.count}` it will give 1 starting base index.

${loop.index} it will give 0 base index as normal Index of array 从0开始。

例如 :

<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>

有关更多信息,请参考此链接


11

您可以使用如下varStatus属性:

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

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

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

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

我得到了这个,Uncaught ReferenceError: myIndex is not defined 并为您的努力+1
Java问题

0
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

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

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

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


0

这对我有用:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.