ポストバックにJavaScript関数内の静的変数の値を維持するには?
-
23-09-2019 - |
質問
私は以下のこのサンプルがあります:
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<script type="text/javascript">
function test(){
if (test.initialized=='undefined'){
test.initialized = 'true';
}
alert(test.initialized);
};
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:Button ID="btnPostBack" runat="server" Text="Post back" OnClientClick="test()" />
</asp:Content>
私は、ページ上のポストバックをクリックすると、私はitself-はその価値を失うとなってきている機能に定義されて-which初期化された変数は、再び「未定義」ということが分かりました。
それは彼らが定義されていたら、それらの静的な値を維持し、ページ上の任意のポスト背中から、彼らが影響を受けずにすることは可能ですか?
解決
あなたは、クエリ文字列としてそれらを追加したり、クッキーにそれらを保つことができます。
他のヒント
たぶん、あなたはこのような何かをしたいです。私はまた、あなたがテストオブジェクトとテスト機能を混乱されていると思います。
var initialized = false;
function test(){
if ( !initialized){
initialized = true;
}
};
alert(initialized); // false
test();
alert(initialized); //true
Javascriptを(あなたが更新パネルを使用していない限り)ページをリロードなどポストバックに再実行されようとしている。
、JSを使用して、ASP隠されたフィールドに値を書き込む、クライアント側の値を保持するようにし、IsPostBackプロパティは、それがポストバック
に上書きされないように真である場合にはJavaScriptをレンダリングしていません私は、部分的なポストバックを使用するだけでなく、方法だと思います。
それが不可能な場合は、のみ使用することにより、Javaスクリプト、私はクッキーがあれば、ユーザーによってで投入されていない限り、別の方法であることができると思います。
私の気持ちが最善の方法は、私はそれを格納する必要はないであろうことのようにページを設計することである。)
あなたは隠されたフィールドを追加し、この値を設定することができますか?私はそれがビューステートに保存されます。この方法だと思い、あなたのようなものを使用して変数にその値の背中をロードすることができます:
変数P = '<%= blah.Text%>';
所属していません StackOverflow