2013-06-23 4 views
0

я следующий код:Использование Javascript переменной в качестве индекса массива

var n = 1; 
var term = "${abc[n].term}"; 
console.log("term = " + term); 

термин кажется пустым, но если я заменю var term = "${abc[n].term}"; по var term = "${abc[1].term}"; это работает.

Похоже, что jsp ищет свойство объекта делянки n, как я могу исправить его так, чтобы n был заменен его значением, когда я использую индекс массива?

Edit: Кажется, что это не очень хорошая идея, чтобы попробовать смешивания JSTL и Javascript, и что, если вы хотите использовать яваскрипт переменного в качестве индекса массива, вы должны скопировать объект в объект Array, как это :

var deck = new Array(); 
<c:forEach var="v" items="${abc}"> 
    deck.push("${v.term}"); 
</c:forEach> 

var n = 1; 
console.log("term = " + deck[n]); 
+0

Вы можете идеально сочетать JavaScript с JSP/JSTL/EL. Вы должны только ** понимать **, что JSP/JSTL/EL работает на веб-сервере и создает HTML-код, а JavaScript является частью созданного HTML-кода, который, в свою очередь, работает в webbrowser. Правая страница в браузере и сделайте * Просмотр источника *. Вы видите это сейчас? Вы должны написать код JSP/JSTL/EL таким образом, чтобы он выдавал желаемый код HTML/JS. – BalusC

ответ

1

Вы не используете кавычки правильно, попробуйте следующее:

var term = "${abc[" + n +"].term}"; 

"${abc[n].term}" здесь п смотрели как часть строки не как переменная n. Поэтому попробуйте конкатенировать его.

+0

Собственно, это то, что я пробовал сначала, но я получаю следующее исключение, если я это делаю: java.lang.NumberFormatException: для строки ввода: «+ n +» java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) java .lang.Integer.parseInt (Integer.java:481) –

+0

'$ {...}' в JSP используется для оценки серверных переменных. Вы, кажется, полностью пропустили этот момент. – BalusC

Смежные вопросы