Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
1

Перекрыть глобальную переменную при изменении страницы?

01.02.2014, 12:31. Показов 1620. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Есть такой код:
Javascript
1
2
3
4
5
6
7
8
$(function()
{
var w = $(window).width();//ширина окна при заходе на страницу
 
$(window).resize(function(){
    w = $(window).width();//ширина окна при изменении страницы
            
    });.....
Внимание, вопрос! Как перекрыть глобальную w при изменении страницы ?
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2014, 12:31
Ответы с готовыми решениями:

Как организовать глобальную переменную, при этом наследуя значение от предыдущей формы?
Доброго времени суток. Есть проблема - не могу понять как можно реализовать глобальную переменную,...

Нужно запустить функцию при закрытии окна, а также при изменении адреса страницы
Нужно запустить функцию при закрытии окна, а также при изменении адреса страницы(но не при...

Информирование при изменении страницы
Нужно написать скрипт который обновляет страницу каждые "N секунд" и проверяет изменения на...

Удалить глобальную переменную
Есть глобальный массив числовых значений.Но он нужен лишь некоторое время.После его требуется...

17
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 12:35 2
Переменная при событии resize у вас берется из внешней функции и меняется при изменении размера окна.
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 13:21  [ТС] 3
vovandr, если - бы! У меня не меняется! Внешняя ф-ция это Вы про ready?
После resize вывожу w в $('footer').html(w); и получаю начальное значение , которое при заходе на страницу. А нужно, как Вы пишите - при изменении размера окна менять значение.
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 14:00 4
А весь код можете показать с выводом?

Добавлено через 7 минут
Скорее всего я догадываюсь в чем проблема...У вас вероятно часть кода находится внутри события готовности документа, а при ресайзе вы меняете переменную w. Тут надо понимать, что сама переменная на самом деле меняется и переопределяется, но чтобы в вашем футере она принимала уже новое значение этот вывод надо заново проинициализировать. Что-то типа такого:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function()
{
var w = $(window).width();//ширина окна при заходе на страницу
 
$(window).resize(function(){
    w = $(window).width();//ширина окна при изменении страницы
     init(); // инициализируем опять при событии ресайза при этом переменную ф-я init будет брать из замыкания
    });
 
 function init(){
  $('footer').html(w); 
 }
 init(); // инициализируем при загрузке
 
});
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 14:23  [ТС] 5
это и есть весь код(что касается переменной w). Без остальных ф-ций это вот так:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$(function()
{
    var w = $(window).width();
        if (w > 700) 
            var arrPref = 'big';
        else
            var arrPref = 'small';      
 
          $(window).resize(function(){
                 w = $(window).width();
                    if (w > 700) 
                var arrPref = "big";
            else
                var arrPref = 'small';
                
            return arrPref;
 
          });//resize   
 
   $('footer').html(arrPref);
 
});end ready
дальше передаю эту arrPref как параметр

Добавлено через 8 минут
Цитата Сообщение от vovandr Посмотреть сообщение
Тут надо понимать, что сама переменная на самом деле меняется и переопределяется
это понимаю, (наверное ). А можно сделать чтобы var w была результатом init() ? Типа вот так
Javascript
1
var w = init();
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 14:27 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 $(function() {
 
        var w = $(window).width();
 
        function getSize(){
          var arrPref =  w > 700 ? 'big' : 'small' ;
          $('footer').html(arrPref);
        }
 
        $(window).resize(function(){
            w = $(window).width();
            getSize();
        });
        
        getSize();
   
});
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 14:34  [ТС] 7
вот пробую:
Javascript
1
2
3
4
5
6
7
8
9
10
$(window).resize(function(){
            w = $(window).width();//ширина окна при изменении страницы
             init(); // инициализируем опять при событии ресайза при этом переменную ф-я init будет брать из замыкания
            });
         
         function init(){
           w = $(window).width();
        }
         var w = init(); 
         $('footer').html(w);
вообще глухо ,нет даже глобальной!
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 14:38 8
jff вот не понятно, я вам сделал один скрипт, а вы юзаете свой (неверный)
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 14:46  [ТС] 9
Цитата Сообщение от vovandr Посмотреть сообщение
$(function() {
var w = $(window).width();
function getSize(){
* * * * * var arrPref = *w > 700 ? 'big' : 'small' ;
* * * * * $('footer').html(arrPref);
* * * * }
$(window).resize(function(){
* * * * * * w = $(window).width();
* * * * * * getSize();
* * * * });
getSize();
});
Все здорово! Работает,но! КАК мне получить arrPref в глобальную область в-сти ?
Извините , уже наверное достал Вас.

Добавлено через 1 минуту
Цитата Сообщение от vovandr Посмотреть сообщение
jff вот не понятно, я вам сделал один скрипт, а вы юзаете свой (неверный)
это я не увидел Ваш ответ,бывает
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 15:01 10
Цитата Сообщение от jff Посмотреть сообщение
Все здорово! Работает,но! КАК мне получить arrPref в глобальную область в-сти ?
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(function() {
 
        var w = $(window).width(),
              arrPref; // arrPref теперь глобальная
 
        function getSize(){
          arrPref =  w > 700 ? 'big' : 'small' ;
          $('footer').html(arrPref);
        }
 
        $(window).resize(function(){
            w = $(window).width();
            getSize();
        });
        
        getSize();
   
});
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 15:22  [ТС] 11
vovandr, похоже ввел Вас в заблуждение - строка $('footer').html(arrPref); нужна для того чтобы видеть,есть результат или нет. Задача другая - получить arrPref в глобальную видимость кода,нужна для ф-ции как параметр. Но вызвать эту ф-цию из getSize нельзя -lдля нее есть еще параметр который меняется. Подскажите пож-та как получить arrPref ? Вот так получаю
Javascript
1
2
var a = getSize();
      $('footer').html(a);
но вновь значение не реагирует на resize

Добавлено через 1 минуту
опять прозевал Ваш ответ , погодите попробую

Добавлено через 3 минуты
[quote="vovandr;5724638"]arrPref теперь глобальная

но она не реагирует на resize, такие дела
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 15:52 12
но она не реагирует на resize, такие дела
код в студию

Добавлено через 28 минут
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(function() {
 
         var arrPref, // arrPref теперь глобальная
               w;
        function getSize(){
          w = $(window).width();
          arrPref =  w > 700 ? 'big' : 'small' ;
          $('footer').html(arrPref);
        }
 
        $(window).resize(function(){
            w = $(window).width();
            getSize();
        });
        
        getSize();
   
});
Теперь по-любому должна реагировать, а просто не вижу как вы проверяете
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 16:21  [ТС] 13
чтобы наверняка - нужно чтобы при изменении окна браузера arrPref менялась (динамически - правильное слово?)
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
$(function()
{       
 
 
         var some  = new Array(
             "Some/1.jpg",
             "Some/2.jpg",
             "Some/3.jpg"
            );
 
         var moto  = new Array(
             "Moto/moto1.jpg",
             "Moto/moto2.jpg",
             "Moto/moto3.jpg"
            );
 
 
        /////////////////////
         
        var w = $(window).width(),
        arrPref; // arrPref теперь глобальная
 
        function getSize(){
          arrPref =  w > 700 ? 'big' : 'small' ;
          $('footer').html(arrPref);
        }
 
        $(window).resize(function(){
            w = $(window).width();
            getSize();
        });
        
        getSize();
 
        //////////////////////
        
        var i = 0;
        /*
        var w = $(window).width();
        if (w > 700) 
            var arrPref = 'big';
        else
            var arrPref = 'small';      
 
          $(window).resize(function(){
                 arrPref = $(window).width();
                    if (arrPref > 700) 
                 arrPref = "big";
            else
                 arrPref = 'small';
                
            return arrPref;
 
          });//resize   
 
   $('footer').html(arrPref);*/// это моя старая версия
 
        /*здесь выбираем массив,согласно нажатой ссылке*/
        /////////////////////////////  
        $('a').click(function(){
            var id = $(this).attr('id');
            if (arrPref == 'big') {
                switch(id){
                    case "some":
                     array = some
                     break;
 
                     case "moto":
                     array = moto;
                     break;
                }
                     forImg(array,arrPref);// вот вызов ЭТОЙ функции
 
 
            } else{
 
                switch(id){
                    case "some":
                     array = some
                     break;
 
                     case "moto":
                     array = moto;
                     break;
                }
                     forImg(array,arrPref);// вот вызов ЭТОЙ функции
            };
            
 
        });
 
        //////////////////////////////
        forImg(array=some,arrPref);// вот вызов ЭТОЙ функции
        function forImg(array,arrPref){
            $('img').attr({'src':arrPref+array[i]});//меняем путь подставляя arrPref
        }
            //переключаем картинку и анимация
        $('#left').click( function () {         
          $('#left').attr('disabled','disabled');
          i--;
          if (i < 0) i = array.length - 1;
          $('img').animate({
                opacity: 0.2,
            }, 1000, 'linear', function() {
                  $(this).animate({opacity:'1'},"slow");
                  $('img').attr({'src':arrPref+array[i]});//меняем путь подставляя arrPref
                  $('#left').removeAttr('disabled'); 
                  // $(this).after('<div>Конец анимации.</div>');
            });
        });
 
         $('#right').click( function () {
         $('#right').attr('disabled','disabled');
          i++;
          if (i == array.length) i = 0;
            $('img').animate({
                        opacity: 0.2,
                  }, 1000, 'linear', function() {
                        $(this).animate({opacity:'1'},"slow");
                        $('img').attr({'src':arrPref+array[i]});//меняем путь подставляя arrPref
                        $('#right').removeAttr('disabled'); 
                        // $(this).after('<div>Конец анимации.</div>');
            });
          });
 
        
 
        
 
             
        
});
Добавлено через 9 минут
Цитата Сообщение от vovandr Посмотреть сообщение
Теперь по-любому должна реагировать, а просто не вижу как вы проверяете
- боюсь неверно объяснил - попробуйте вызвать
Javascript
1
$('footer').html(arrPref);
ВНЕ ФУНКЦИИ - имеем значение которое получено при заходе на страницу. Нужно при изменении размеров окна менять arrPref постоянно! Как-то так
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 16:35 14
ВНЕ ФУНКЦИИ - имеем значение которое получено при заходе на страницу. Нужно при изменении размеров окна менять arrPref постоянно!
Вынесите за пределы arrPref, w и всё. Но тут стоит заметить, что ваш код отрабатывает на ready, поэтому скрипт вызываемый вне этой функции должен будет располагаться песле всего вашего html. А вообще имхо если вам такое понадобилось вы явно что-то перемудрили Хотя могу ошибаться
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 16:43  [ТС] 15
Цитата Сообщение от vovandr Посмотреть сообщение
Вынесите за пределы arrPref, w
- извините снова я! за пределы чего? пож-та чуть подробнее...

Добавлено через 2 минуты
Цитата Сообщение от vovandr Посмотреть сообщение
такое понадобилось
Вы о чем ? может действительно подскажите лучший путь ?
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 16:56 16
Вот опять, у меня w внутри getSize у вас же нет!!! и как тут быть то? вы издеваетесь или тролите?

Добавлено через 8 минут
И проверьте ваш код на ошибки, консоль здесь выдает ошибку:
Javascript
1
2
3
function forImg(array,arrPref){
            $('img').attr({'src':arrPref+array[i]});//меняем путь подставляя arrPref
        }
0
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 20
01.02.2014, 17:17  [ТС] 17
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[quote="vovandr;5724737"]$(function() {
var arrPref, // arrPref теперь глобальная
* * * * * * * *w;
* * * * function getSize(){
* * * * * w = $(window).width();
* * * * * arrPref = *w > 700 ? 'big' : 'small' ;
* * * * * $('footer').html(arrPref);
* * * * }
$(window).resize(function(){
* * * * * * w = $(window).width();
* * * * * * getSize();
* * * * });
getSize();
});[/quote]
это Ваш код , я его скопировал и вставил. поэтому все переменные на месте - как Вы писали. Ошибок в хроме не выдает.

Добавлено через 2 минуты
Цитата Сообщение от vovandr Посмотреть сообщение
вы издеваетесь или тролите?
нет и еще раз нет!
0
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
01.02.2014, 17:20 18
нет и еще раз нет!
Хорошо. Ошибку про которую я написал пофиксили?
0
01.02.2014, 17:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2014, 17:20
Помогаю со студенческими работами здесь

Не сохраняется в глобальную переменную
Здравствуйте. Глупая проблема, но её не решить. Нужно выполнить элементарное действие: введённое...

Завести глобальную переменную в JS
Подскажите, пожалуйста! Как можно в документе с фреймами в JavaScript создать переменную...

Не увеличивает глобальную переменную
Когда пытаюсь скомпилировать: g++ -o myprg myprg.c не компилирует. выдает ошибку: в строке 30....

Ругается на глобальную переменную
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru