Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Глобальные переменные (https://javascript.ru/forum/misc/31095-globalnye-peremennye.html)

Гео_zen 27.08.2012 00:14

Глобальные переменные
 
Помогите, плиз, я дизайнер, в JS очень слаб:-?

Есть скрипт, который по клику на объект с id b1 присваивает переменной x значение 2, и затем (на другой странице) если это значение равно 2, то прячет объект с id t2

<script type="text/livescript">
var x=0;

$(document).ready(function(e) {
$('#b1').click(function (){
x=2;
});

if(x == 2)

$('#t2').hide ();

});

</script>

Проблема в том, что оператор if не видит присвоенного значения x=2 вне функции .click(function(){});

Подскажите, плиз, что изменить чтобы значение присвоенное переменой было видно везде.

Заранее спасибо.

lancer 27.08.2012 00:25

Если вы потом хотите свое x использовать на другой странице, то 2 надо записывать в cookie, и на другой странице уже читать из этой cookie. А ваша переменная, как и любая другая, только для одной страницы существует, своя. Глобальных переменных такого плана нет.

lord2kim 27.08.2012 00:31

Гео_zen, все работает...при клике по элементу #b1 переменная x получает значение 2
если вам требуется использовать данную переменную на других страницах, то используйте cookie, localStorage или еще что нибудь, для хранения ее значения

Гео_zen 27.08.2012 00:36

Цитата:

Сообщение от lancer (Сообщение 200729)
Если вы потом хотите свое x использовать на другой странице, то 2 надо записывать в cookie, и на другой странице уже читать из этой cookie. А ваша переменная, как и любая другая, только для одной страницы существует, своя. Глобальных переменных такого плана нет.

Lancer, спасибо вам за подсказку. Буду разбираться, если что к вам ещё постучусь:)

Гео_zen 27.08.2012 00:41

Цитата:

Сообщение от lord2kim (Сообщение 200733)
Гео_zen, все работает...при клике по элементу #b1 переменная x получает значение 2
если вам требуется использовать данную переменную на других страницах, то используйте cookie, localStorage или еще что нибудь, для хранения ее значения

lord2kim Спасибо за ваш совет! А если потом этот скрипт будет в Andriod приложении, которое native, не web, каким способом хранения вы считаете лучше воспользоваться?

Гео_zen 27.08.2012 01:56

Ещё один глупый вопрос -
если все страницы документа находятся на одной (шаблон мобильного приложения JQuery mobile в Dreamweaver) и описаны в одном файле index.html то значения переменной так же необходимом передавать, чтобы на последний странице вывести определённый результат в зависимости от действий пользователя на предыдущих страницах? :-?

Т.е. в переменной суммируются значения при клике по объектам на первых 3-ёх страницах, а на последней в зависимости от значения этой переменной выдается результат. Как передать значение этой переменной на всех 4-ёх страницах, с учётом вышесказанного? :-?

lancer 27.08.2012 13:09

Не знаю, что это за шаблон мобильного приложения. Но, если index.html не перезагружается за все шаги вплоть до последней страницы, и там просто меняется скриптом контент в зависимости от страницы, то никаких куков не нужно.

Гео_zen 27.08.2012 14:08

Структура шаблона такая + то что я написал:

<!DOCTYPE html>
<html>
<head>
//подключение библиотек не пишу тут

<scpirt>
$(document).ready(function(e) {
$('#b1').click(function (){
localStorage.setItem('key', '3');

});

var item = localStorage.getItem('key');

if(item == 3)

$('#t2').hide ();

});

</script>
</head>


<div data-role="page" id="page">

<div data-role="content">
<p> <a href="#page2" data-role="button" id='b1'> </a>
</p>

</div>
</div>

<div data-role="page" id="page2">

<div data-role="content">
<p><img src="text.jpg" width="299" height="73" id="t1"></p>
<p><img src="text1.jpg" name="t2" width="303" height="73"

</div>
</div>

</body>
</html>


Потом это перегоняется в .apk файл.


В Chrome localstorage работает корректно, а вот в android эмуляторе и в конечном apk - нет :-?

Если делать без localstorage то и в Chrome оператор if уже не видит значение переменной, которая была присвоена по клику на 1-ой странице....

Может быть вы знаете, какой лучше применить метод хранения переменных, если конечный продукт это .apk файл, и просматриваться будет не в браузере?

Гео_zen 27.08.2012 15:30

Цитата:

Сообщение от lancer (Сообщение 200834)
Не знаю, что это за шаблон мобильного приложения. Но, если index.html не перезагружается за все шаги вплоть до последней страницы, и там просто меняется скриптом контент в зависимости от страницы, то никаких куков не нужно.

lancer, готов вас отблагодарить материально за корректный код по этой задачи.

Сформулирую её ещё раз -

Есть страница на HTML, CSS и Javascript (часть будущего нативного android приложения - .apk файл)

Выглядит так:


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>

<link href="jquery-mobile/jquery.mobile-1.0a3.min.css" rel="stylesheet" type="text/css"/>
<script src="jquery-mobile/jquery-1.5.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0a3.min.js" type="text/javascript"></script>
<script src="/cordova.js" type="text/javascript"></script>
<script type="text/livescript">
</head>

<body>
<div data-role="page" id="page1">

<div data-role="content">
<p> <a href="#page2" data-role="button" id='b1'> </a></p>
<p> <a href="#page2" data-role="button" id='b2'> </a></p>

<div data-role="page" id="page2" >

<div data-role="content">
<p><img src="text.jpg" width="299" height="73" id="t1"></p>
<p><img src="text1.jpg" width="303" height="73" id="t2"></p>
</div>
</body>
</html>

Задача -
написать javascript код, который по клику по кнопку #b1 на странице 1, присвоит переменной x определённое значение, например 3. При переходе на страницу 2, если x=3 нужно показать text1
, если не равно то показать text2.

Примечание: Приложение будет работать не под браузер, а как родное (.apk файл) .


Часовой пояс GMT +3, время: 16:45.