Как сохранить значения статических переменных в функциях 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 будет повторно выполняться при обратной передаче при перезагрузке страницы (если вы не используете панели обновления).
чтобы сохранить значение на стороне клиента, запишите значение в скрытое поле asp с помощью JS и не отображайте javascript, если IsPostBack имеет значение true, чтобы оно не перезаписывалось при обратной передаче
Я думаю, что использование частичной обратной отправки — это тоже способ.
Если это невозможно, то только с помощью Java-скрипта. Я думаю, что файлы cookie могут быть другим способом, если они не отключены пользователем.
Я считаю, что лучший способ — создать страницу таким образом, чтобы мне не нужно было ее хранить :)
Вы могли бы добавить скрытое поле и установить его значение?Я думаю, что таким образом оно сохранится в состоянии просмотра, и вы сможете загрузить его значение обратно в свою переменную примерно так:
var p = '<%=blah.Text%>';