1

以下にこのサンプルがあります。

<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>

ページのポストバックをクリックすると、初期化された変数(関数自体で定義されている)がその値を失い、再び「未定義」になっていることがわかりました。

それらが定義された後、それらの静的な値を保持し、ページ上のポストバックの影響を受けないようにすることは可能ですか?

4

5 に答える 5

2

それらをクエリ文字列として追加するか、Cookie に保持することができます。

于 2010-01-27T13:02:10.800 に答える
1

多分あなたはこのようなことをしたいでしょう。また、テスト関数とテストオブジェクトを混同していると思います。

var initialized = false;
function test(){
    if ( !initialized){
        initialized = true;
    }
};
            alert(initialized); // false
            test();
            alert(initialized); //true
于 2010-01-27T13:03:42.450 に答える
1

ページがリロードされると、ポストバック時にjavascriptが再実行されます(更新パネルを使用している場合を除く)。

クライアント側の値を保持するには、JSを使用してaspの非表示フィールドに値を書き込み、IsPostBackがtrueの場合はJavaScriptをレンダリングしないで、ポストバックで上書きされないようにします。

于 2010-01-27T13:06:46.390 に答える
0

隠しフィールドを追加して、この値を設定できますか? このようにしてビューステートに保存されると思います。次のような方法で、その値を変数に戻すことができます。

var p = '<%=blah.Text%>';

于 2010-01-27T14:04:30.370 に答える
0

部分ポストバックを使用することも方法だと思います。

それが不可能な場合は、Java スクリプトを使用するだけで、ユーザーが Cookie を無効にしない限り、別の方法で Cookie を使用できると思います。

私の気持ちは、ページを保存する必要のない方法でページをデザインすることです:)

于 2010-01-27T13:15:32.340 に答える