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

我认为使用部分回发也是一种方法。

如果不可能,只有使用 Java 脚本,我认为 cookie 可以是另一种方式,只要它们不被用户关闭。

我的感觉是最好的方法是以我不需要存储它的方式设计页面:)

于 2010-01-27T13:15:32.340 回答
0

您可以添加一个隐藏字段并设置它的值吗?我认为这样它将被保留在视图状态中,并且您可以将其值加载回您的变量中,例如:

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

于 2010-01-27T14:04:30.370 回答