如何在回发时保留 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>
当我单击页面上的回发时,我发现初始化的变量(在函数本身上定义)正在丢失其值并再次变为“未定义”。
是否可以在定义这些静态值后保留这些值并使它们不受页面上任何回发的影响?
解决方案
您可以将它们添加作为查询字符串或将其保存在cookie中。
其他提示
也许你想做这样的事情。我还认为您将测试函数与测试对象混淆了。
var initialized = false;
function test(){
if ( !initialized){
initialized = true;
}
};
alert(initialized); // false
test();
alert(initialized); //true
的JavaScript将是重新执行在回发作为页面重新加载(除非使用的是更新图)。
要保持一个客户端的价值,用JS写值到一个asp隐藏字段,并且不会使JavaScript的,如果是的IsPostBack真的如此,它并不会被覆盖上回发
我觉得使用部分交背面是一个方式为好。
如果这是不可能的,只能通过使用Java脚本我觉得饼干可以另一种方式,只要它们不被用户打开的。
我的感觉是最好的办法是在一个方式来设计网页,我不会需要将它存储:)
您可以添加一个隐藏字段,并设置这个值?我认为这种方式会在ViewState被保留,并且可以加载它的值返回到您的变量,是这样的:
变种p值= '<%= blah.Text%>';
不隶属于 StackOverflow