Cara mendapatkan nilai indeks dari foreach loop di jstl


107

Saya memiliki nilai yang ditetapkan pada requestobjek seperti berikut,

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

dan ini adalah cara saya mengulang di halaman jsp

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

Bagaimana cara mendapatkan indeks dari setiap elemen dan meneruskannya ke fungsi JavaScript onclick="getCategoryIndex()".

Jawaban:


235

gunakan varStatus untuk mendapatkan indeks c: forEach varStatus properti

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

Saya mendapatkan Uncaught ReferenceError: loop ini tidak ditentukan `dan +1 untuk usaha Anda
Pertanyaan Java

onClick dari elemen yang ditampilkan
Pertanyaan Java

Karena nilai varStatus berisi nilai hingga iterasi pengulangan. Setelah itu, nilainya tidak valid. jadi hanya Anda yang mendapat pengecualian. Untuk yang tujuan Anda butuhkan indeks
newuser

Saya perlu mengetahui indeks [lokasi] setiap elemen yang ada di String Array.
Pertanyaan Jawa

ini berfungsi :) jika saya melakukan cara ini onclick = "getCategoryIndex ($ {loop.index})" ... terima kasih atas bantuannya
Pertanyaan Java

19

Saya menghadapi masalah serupa sekarang saya mengerti kita memiliki beberapa opsi lagi: varStatus = "loop", Di sini akan menjadi variabel loop yang akan menahan indeks lop.

Dapat digunakan untuk membaca indeks dasar Zeor atau 1 indeks dasar.

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

${loop.index} it will give 0 base index as normal Index of array mulai dari 0.

Sebagai contoh :

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

Untuk Info lebih lanjut, silakan lihat tautan ini


11

Anda dapat menggunakan varStatusatribut seperti ini: -

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

myIndex.index akan memberi Anda indeks. Berikut myIndexadalah objek LoopTagStatus .

Karenanya, Anda dapat mengirimkannya ke metode javascript Anda seperti ini: -

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

Saya mendapatkan ini Uncaught ReferenceError: myIndex is not defined dan +1 atas usaha Anda
Pertanyaan Jawa

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

baris di atas memberi saya kesalahan. Jadi saya menulis di bawah ini yang bekerja dengan baik untuk saya.

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

Mungkin orang lain mungkin mendapatkan kesalahan yang sama. Lihat orang-orang ini!


0

Ini bekerja untuk saya:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.