2013-06-23 65 views
0

我有以下代碼:使用JavaScript變量作爲數組索引

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

這一術語似乎是空的,但如果我通過 var term = "${abc[1].term}"; 更換 ​​3210 它的工作原理。

它看起來像jsp正在尋找甲板對象的n屬性,我怎麼能修復它,以便n被替換爲它的值,當我使用數組索引?

編輯: 看來,這不是一個好主意,試圖混合JSTL和Javascript,而如果你想使用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在web服務器上運行並生成HTML代碼,並且JavaScript是生成的HTML代碼的一部分,該代碼反過來在webbrowser中運行。在瀏覽器中右鍵單擊頁面,然後執行*查看源代碼*。你現在看到了嗎?您應該編寫JSP/JSTL/EL代碼,使其能夠生成所需的HTML/JS代碼。 – BalusC

回答

1

您沒有使用引號正確,試試這個:

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

"${abc[n].term}"這裏n爲considred作爲字符串的一部分,而不是你的變量n。所以請嘗試連接它。

+0

其實,這是我第一次嘗試,但我得到以下異常,如果我這樣做:java.lang.NumberFormatException:對於輸入字符串:「+ n +」java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)java .lang.Integer.parseInt(Integer.java:481) –

+0

JSP中的'$ {...}'用於評估服務器端變量。你似乎完全錯過了這一點。 – BalusC