2011-05-11 34 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