javascript
  • postback
  • static-variables
  • 2010-01-27 87 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%>”;

    相关问题