Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Прошу помочь разобраться (https://javascript.ru/forum/dom-window/25448-proshu-pomoch-razobratsya.html)

andrey888 05.02.2012 23:41

Прошу помочь разобраться
 
Есть глобальная переменная
var zt=0;

Две кнопочки onclick="om(1);" и onclick="om(0);" ,которые вызывают простую функцию и меняют эту переменную
function om(a){	
 a==1 ? window.zt=1 : window.zt=0;
 //alert(window.zt); для наглядности	
	}

существует функция из подключенного JQuery файла.
Всю писать ее смысла нет, главным образом важна одна из первых строк где проверяется наша глобальная переменная:
jQuery.noConflict()
var ddpowerzoomer={
dsetting: {defaultpower:window.zt==1 ? 3 : 2, powerrange:[2,10], и т.д.

Проблема в том что после изменения глобальной переменной (onclick="om(1);") на нее никак не реагирует функция из JQuery - то есть как будто мы ее(переменную) не меняли.. То что присваиваем глобальной переменной в самом начале - так эта переменная и проходит в JQuery.
В чем может быть проблема ? почему нет реакции ?
Спасибо.

poorking 06.02.2012 00:16

Цитата:

Сообщение от andrey888
как будто мы ее(переменную) не меняли.

А вы внимательно посмотрите код om()


>>> Если а == 1, то zt = 1, иначе 0

Поменяйте на
window.zt =  a === 1 ? 0 : 1;

andrey888 06.02.2012 00:28

Цитата:

Сообщение от poorking (Сообщение 155624)
А вы внимательно посмотрите код om()


>>> Если а == 1, то zt = 1, иначе 0

Поменяйте на
window.zt =  a === 1 ? 0 : 1;

Поменял.. При этом что ваш вариант, что тот что мне нужен
window.zt =  a === 1 ? 1 : 0;
не работают ..
Сама переменная меняется и менялась раньше (это можно проверить простым алертом) ..
Получается алерт выдает переменную уже помененную (следовательно функция сработала) ... А следом за ней функция JQuery относится к переменной по старому - будто ее не меняли..
Не пойму в чем косяк ...

poorking 06.02.2012 00:34

Цитата:

Сообщение от andrey888
window.zt =  a === 1 ? 1 : 0;

Это то же самое что
if (a === 1) {a = 1;} else {a = 0;}


Я так понял, что вы обратного результата добиваетесь, вы хотите менять 1 на 0 и наоборот. Это даже проще делается, но вы хотя бы с этим разберитесь.

Почитайте про тернарный оператор чтоли.. Если вы в вашу функцию передаете 1, то она и вернет 1, если ноль, то и вернет 0

andrey888 06.02.2012 00:41

Дак в том то и дело - я того и добиваюсь )) ..

Еще раз по пунктам : есть глобальная переменная равная 0
Есть функция которая меняет ее на 1 либо обратно на 0
Есть следующая функция из JQuery которая в соответствии с переменной выдает свой результат . Если 0 - значит один , если 1 значит результат другой ..

В итоге при изменении перемнной (не важно откуда куда) алерт говорит что переменная изменена (скажем стала ровна 1) , а функция JQuery этих изменений не видит - поэтому и результат один и тот же .. никакой реакции .


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