javascript
  • postback
  • static-variables
  • 2010-01-27 52 views 1 likes 
    1

    我有下面這個例子:如何在回發函數中保留JavaScript函數中的靜態變量值?

    <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-正在失去它的價值,成爲「未定義」再次。

    是否可以保留這些靜態值,一旦它們被定義,並使它們不受任何頁面上的帖子的影響?

    +0

    回發只是一個名字,或者你的意思是點擊瀏覽器後退按鈕? – 2010-01-27 13:06:04

    回答

    2

    您可以將它們添加爲查詢字符串或將它們保存在cookie中。

    +0

    將它們添加到查詢字符串對於WebForms可能有點痛苦。 Cookie可能被禁用(可能) – mcintyre321 2010-01-27 13:08:49

    +0

    如果使用下面的方法(Paul Deen)將js var添加爲(實際上不確定使用什麼語言)var, – matpol 2010-01-27 15:44:45

    1

    也許你想要做這樣的事情。我也認爲你正在將測試功能與測試對象混淆。

    var initialized = false; 
    function test(){ 
        if (!initialized){ 
         initialized = true; 
        } 
    }; 
          alert(initialized); // false 
          test(); 
          alert(initialized); //true 
    
    1

    javascript將在頁面重新加載時重新執行(除非您正在使用更新面板)。

    維護一個客戶端的值,編寫使用JS值到ASP隱藏字段,並且不會使JavaScript的,如果是的IsPostBack真的如此,它並不會被覆蓋上回發

    0

    我認爲使用部分回帖也是一種方式。

    如果這是不可能的,只有使用Java腳本,我認爲cookie可以是另一種方式,只要它們沒有被用戶轉向。

    我的感覺是最好的辦法是設計網頁的方式,我不會需要將它存儲:)

    0

    你可以添加一個隱藏字段,並設置這個值?我認爲這種方式會在ViewState被保留,並且可以將其重新加載它的價值到您的變量的東西,如:

    變種P =「<%= blah.Text%>」;

    相關問題