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」変数は1回だけインクリメントされます。それ以上インクリメントされません。

私が何か間違ったことをしているなら助けてください。ありがとうRaghav

4

1 に答える 1

1

これは、考慮すべき 2 つのコンテキストがあるためです。

  • レンダリング コンテキスト (速度/VTL)
  • 実行コンテキスト (ブラウザ/クライアント)

したがって、これがレンダリングされると、Velocity エンジンで1 回実行され、$count_security をインクリメントする速度ロジックが実行されます。これは、リテラル値として出力にレンダリングされます。

var count_security は、クライアントが変更および更新できるJavaScript CLIENT変数です。

あなたの速度 #set() コードは、「セット」として出力にレンダリングされません。#set は VTL 関数であり、出力ストリームを変更しません。

それが理にかなっていることを願っています。

于 2011-05-11T09:40:36.560 に答える