2013-07-03 22 views
2

所以我不完全確定我應該尋找什麼來解決這個問題。我只知道這是一個問題。所以我有一個觀點,有一個列表返回到它的插曲名稱。在視圖中,我有一個帶有jQuery調用的按鈕,每次按下按鈕時,我都想循環播放劇集。我創建了一個迭代器,但問題是,如果我在jQuery函數中增加迭代器,它的作用域會在下次按下按鈕時保持它的值,這意味着它只能增加一個。代碼種類看起來像這樣Web2Py無法在使用jQuery的視圖中遍歷列表

$(document).ready(function(){ 
{{iter = 0}} 
$('#nextButton').click(function(){ 
    {{iter = iter + 1}} 
    $('.firstEp').children().remove() 
    $('.firstEp').append('<p>epList[iter]</p>') 
}); 

因此,它可以增加一次你按下按鈕,但不是之後。我能用什麼來解決這個問題?

回答

2

所以我在python中有一個列表,我想在我的jQuery函數中進行迭代。爲了做到這一點,我必須首先將它變成一個JavaScript數組。我可以

jsArray{{=XML(response.json(pyList))}}

做到這一點,其中pyList是你的Python列表,並jsArray是JavaScript陣列。你可以在你的jQuery事件處理器中迭代jsArray。

1
$(document).ready(function(){ 
{{iter = 0}} <-- WEB2PY TEMPLATE CODE 
$('#nextButton').click(function(){ 
    {{iter = iter + 1}} <-- WEB2PY TEMPLATE CODE 
    $('.firstEp').children().remove() 
    $('.firstEp').append('<p>epList[iter]</p>') 
}); 

上述假設是在一個的web2py模板,上面標明的兩行是web2py的模板代碼,這是獲取HTML頁面返回到瀏覽器之前在服務器上執行的Python。在這種情況下,由於每行不是以=開頭,因此沒有任何內容會寫入頁面,因此寫入的Javascript將在這些位置僅有空行。相反,你需要用Javascript編寫所有這些。

+0

我怎樣才能迭代python中的列表與JavaScript變量。我得到的列表來自我的控制器,並沒有阻止。我只是想在每次點擊按鈕時迭代它。 –

+0

對不起,你試圖做什麼並不完全清楚。如果您需要在瀏覽器中單擊以在服務器上進行更改,則可能需要使用Ajax。我建議您在[Google網上論壇](https://groups.google.com/forum/?fromgroups=#!forum/web2py)上尋求幫助,並顯示更多代碼(即控制器代碼)。 – Anthony

+0

好吧,我明白了。我需要使用{{= XML(response.json(pythonList))}}將我的Python列表變成一個javascript數組。這讓我一次迭代一個元素。感謝您的幫助 –