如何从jstl中的foreach循环中获取索引值
Posted
技术标签:
【中文标题】如何从jstl中的foreach循环中获取索引值【英文标题】:How to get a index value from foreach loop in jstl 【发布时间】:2013-09-20 11:32:33 【问题描述】:我在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()"
。
【问题讨论】:
【参考方案1】:使用varStatus获取索引c:forEach varStatus properties
<c:forEach var="categoryName" items="$categoriesList" varStatus="loop">
<li><a onclick="getCategoryIndex($loop.index)" href="#">$categoryName</a></li>
</c:forEach>
【讨论】:
我知道这个Uncaught ReferenceError:
loop 没有定义`并且为你的努力+1
onClick 显示的元素
因为 varStatus 值包含循环迭代之前的值。之后,该值无效。所以只有你有例外。您需要索引的目的是什么
我需要知道字符串数组中每个元素的索引[位置]。
它有效 :) 如果我这样做 onclick="getCategoryIndex($loop.index)" ...感谢您的帮助【参考方案2】:
您可以像这样使用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【参考方案3】:
我也遇到过类似的问题。经过研究,我了解到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]" ></img>
</picture>
</c:forEach>
更多信息请查看link。
【讨论】:
【参考方案4】:<a onclick="getCategoryIndex($myIndex.index)" href="#">$categoryName</a>
上面的行给了我一个错误。所以我用下面的方式写下来,这对我来说很好。
<a onclick="getCategoryIndex('<c:out value="$myIndex.index"/>')" href="#">$categoryName</a>
也许其他人可能会遇到同样的错误。看看这家伙!
【讨论】:
【参考方案5】:这对我有用:
<c:forEach var="i" begin="1970" end="2000">
<option value="$2000-(i-1970)">$2000-(i-1970)
</option>
</c:forEach>
【讨论】:
以上是关于如何从jstl中的foreach循环中获取索引值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JSTL forEach 循环检索 HashMap [重复]