2011-05-11 49 views
0
<script>  
    var count_security = 0; 
    #set($count_security = 0) 

    function increment() {  
     count_security++; 
     #set($count_security = $count_security + 1) 
     alert(count_security); 
     alert($count_security);  
    } 
</script> 

<html> 
    <input type="button" onclick="increment" /> 
</html> 

當我打電話按鈕上的「$count_security」變量遞增僅once.Its不進一步遞增的點擊上述功能。遞增在VTL可變javascript函數

如果我做錯了什麼,請幫忙。 感謝 拉哈夫

回答

1

這是因爲你有兩個背景下考慮

  • 渲染上下文(速度/ VTL)
  • 執行上下文(瀏覽器/客戶端)

所以當這個呈現時,你將在Velocity引擎中執行執行速度邏輯,該速度邏輯增加$ count_security。這將作爲文字值輸出到輸出中。

var count_security是一個JavaScript 客戶端變量,可由客戶端更改和更新。

您的速度#set()代碼將不會作爲「set」呈現在輸出中。 #set是一個VTL函數,不會改變輸出流。

我希望這是有道理的。

+0

有什麼辦法可以增加速度變量? – kishore 2011-05-11 11:29:45

+0

或有沒有辦法,我可以分配一個JavaScript變量的速度變量? – kishore 2011-05-11 11:41:57

+0

頁面通過速度上下文呈現後,與該上下文相關聯的任何變量「蒸發」。本質上來自客戶端的背景並不存在。如果您希望維護圍欄兩側的count_security,則需要實現一些措施以保持用戶會話中的count_security,並使用AJAX在會話中更新該變量以保留它與客戶端同步。雖然這聽起來很困難,但這是一件微不足道的事情。 – 2011-05-11 12:47:09