Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.08.2012, 00:14
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

Глобальные переменные
Помогите, плиз, я дизайнер, в 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(){});

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

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2012, 00:25
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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

Последний раз редактировалось lancer, 27.08.2012 в 00:28.
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2012, 00:31
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Гео_zen, все работает...при клике по элементу #b1 переменная x получает значение 2
если вам требуется использовать данную переменную на других страницах, то используйте cookie, localStorage или еще что нибудь, для хранения ее значения
Ответить с цитированием
  #4 (permalink)  
Старый 27.08.2012, 00:36
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

Сообщение от lancer Посмотреть сообщение
Если вы потом хотите свое x использовать на другой странице, то 2 надо записывать в cookie, и на другой странице уже читать из этой cookie. А ваша переменная, как и любая другая, только для одной страницы существует, своя. Глобальных переменных такого плана нет.
Lancer, спасибо вам за подсказку. Буду разбираться, если что к вам ещё постучусь
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2012, 00:41
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

Сообщение от lord2kim Посмотреть сообщение
Гео_zen, все работает...при клике по элементу #b1 переменная x получает значение 2
если вам требуется использовать данную переменную на других страницах, то используйте cookie, localStorage или еще что нибудь, для хранения ее значения
lord2kim Спасибо за ваш совет! А если потом этот скрипт будет в Andriod приложении, которое native, не web, каким способом хранения вы считаете лучше воспользоваться?
Ответить с цитированием
  #6 (permalink)  
Старый 27.08.2012, 01:56
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

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

Т.е. в переменной суммируются значения при клике по объектам на первых 3-ёх страницах, а на последней в зависимости от значения этой переменной выдается результат. Как передать значение этой переменной на всех 4-ёх страницах, с учётом вышесказанного?
Ответить с цитированием
  #7 (permalink)  
Старый 27.08.2012, 13:09
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Не знаю, что это за шаблон мобильного приложения. Но, если index.html не перезагружается за все шаги вплоть до последней страницы, и там просто меняется скриптом контент в зависимости от страницы, то никаких куков не нужно.
Ответить с цитированием
  #8 (permalink)  
Старый 27.08.2012, 14:08
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

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

<!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 в 14:11.
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2012, 15:30
Новичок на форуме
Отправить личное сообщение для Гео_zen Посмотреть профиль Найти все сообщения от Гео_zen
 
Регистрация: 26.08.2012
Сообщений: 6

Сообщение от lancer Посмотреть сообщение
Не знаю, что это за шаблон мобильного приложения. Но, если 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 файл) .
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальные переменные в jquery IHB jQuery 11 20.02.2013 13:37
setInterval и глобальные переменные Почемучкин Events/DOM/Window 11 11.08.2012 14:44
глобальные переменные сайта и js leko Общие вопросы Javascript 8 01.07.2012 10:53
Глобальные переменные kilogram Серверные языки и технологии 3 30.03.2012 15:59
JavaScript глобальные переменные anset jQuery 7 22.12.2010 17:31