Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 2
Регистрация: 29.05.2013
Сообщений: 143

Вытащить переменную из функции

03.02.2017, 13:06. Показов 2172. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такая функция:

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
setInterval(function() {
            var name = '<?= $_GET['name'] ?>';
            var title = '<?= $_GET['title_weapon'] ?>';
                $.ajax({
                    url: 'updating_cells.php',
                    type: 'POST',
                    data: {table_name: name, title: title}, 
                    success: function( msg ){
                        var cart = JSON.parse ( msg );
                        var i = 0;
                        while(i <= cart.bet_number){
                            var n = i+1;
                            if($('#cell-'+ n).css("background-image") == 'url("'+window.location.toString()+'")'){
                                if(cart[i] != 0){
                                    $('#cell-'+ n).attr('style','background: url("'+cart[i]+'") round rgba(0,0,0,.8)');
                                }
                            }
                            if($('#cell-'+ n).css("background-image") != 'url("'+window.location.toString()+'")'){
                                $('#cell-'+ n).css("font-size", "0px");
                                $('#cell-'+ n).css("cursor", "default");
                            }
                            
                            if((cart.entr_b / cart.bet_number) * 100 <= 80 && (cart.entr_b / cart.bet_number) * 100 >= 40){
                                $('#progress_bar').addClass('yellow');
                            }
 
                            if((cart.entr_b / cart.bet_number) * 100 >= 80 ){
                                $('#progress_bar').addClass('red');
                            }
 
                            if(n == cart.bet_number){
                                $('#progress_bar').css('width', cart.progress_entr_b + '%');
                                document.getElementById('entr_bets').innerHTML = cart.entr_b;
                            }
 
                            if (cart.refresh == "true"){
                                clearInterval();
                            }
                            i++;
                        }
                    }
                });
        }, 1000);
Нужно вытащить из функции
JavaScript
1
cart.refresh
для того чтобы сделать вот такое условие
JavaScript
1
2
3
if (cart.refresh == "true"){
                                location.reload();
                            }
Просто если его прописать в функции, страница будет обновляться через кажд 1 сек если будет переменная
JavaScript
1
cart.refresh == "true"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2017, 13:06
Ответы с готовыми решениями:

Как вытащить в javascript из php переменную?
Есть запрос к базе данных mysql: $query = &quot;SELECT plans.room, disciplin.disciplin_code, plans.plan, disciplin.disciplin_name FROM...

Как вытащить то что находится в qq.href и записать в переменную $rnd
есть код function wmlclaFb3AY4(ee, ww, qq){ if (qq.href.indexOf('&amp;') &lt; 0){ qq.href += '&amp;rnd=1352734.5794206';...

Не могу вытащить переменную из функции
суть: Есть функция добавления элемента в структуру, в неё закидываю этот самый элемент, она его добавляет, теперь мне нужно вытащить этот...

8
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
03.02.2017, 13:59
Hrustik, Не очень понял. А в каком случае должно происходить обновление страницы?
0
2 / 2 / 2
Регистрация: 29.05.2013
Сообщений: 143
03.02.2017, 15:42  [ТС]
sad67man, Короче говоря в обработчике есть условия, если оно верное то выводиться в msg refresh == "true", если его прописать в функции там где уловие if refresh == "true" и прописать релоад, то после того как это условие сработает страница будет обновляться без остановки, по этому его нужно из функции вывести как-то и вне интервала прописать
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
03.02.2017, 17:45
Hrustik, Не представляется что значит вытащить переменную, скорее всего это не получится сделать. Но таймер можно остановить таким образом
JavaScript
1
2
3
var intervalId = setInterval(function() {
  clearInterval(intervalId);
},1000);
0
2 / 2 / 2
Регистрация: 29.05.2013
Сообщений: 143
03.02.2017, 19:12  [ТС]
sad67man,
Сделал но мне это ничего не дает, когда cart.refresh == "true" мне нужно остановить таймер и перезагрузить страницу
JavaScript
1
2
3
4
5
if (cart.refresh == "true"){
                                clearInterval(intervalId);                      
                                location.reload();
                            }
                            i++;
Добавлено через 1 минуту
и получается что таймер не останавливается тк страница перезагрузилась и опять пошел интервал
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
03.02.2017, 19:17
Hrustik, Когда страница перезагружается, весь предыдущий код забывается. Страница загружается заново, и код начинает работать с самого начала.

Добавлено через 2 минуты
Hrustik, Вам нужно придумать логику, чтоб таймер не запускался при загрузке страницы. Может быть передать get параметр, либо использовать куки/localstorage.
0
2 / 2 / 2
Регистрация: 29.05.2013
Сообщений: 143
03.02.2017, 19:18  [ТС]
sad67man, ну вот а нужно сделать так чтобы и остановился таймер и перезагрузилась страница и таймер больше не работал, по этому я и хочу вынести из функции cart.refresh, чтобы потом взять в условие всю функцию если
cart.refresh == null тогда выполнять функцию, так можно?
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
03.02.2017, 19:52
Hrustik, Попробуйте использовать такую конструкцию. Код не проверял
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
if (localStorage.getItem('stopInterval')) {
  localStorage.removeItem('stopInterval');
  console.log('stop');
} else {
  var intervalID = setInterval(function() {
 
    var name = '<?= $_GET['name'] ?>';
    var title = '<?= $_GET['title_weapon'] ?>';
 
    $.ajax({
      url: 'updating_cells.php',
      type: 'POST',
      data: {
        table_name: name,
        title: title
      },
      dataType: 'json'
    }).done(function(cart) {
 
      for (var i = 0; i <= cart.bet_number; i++) {
        var n = i + 1;
        if ($('#cell-' + n).css("background-image") == 'url("' + window.location.toString() + '")') {
          if (cart[i] != 0) {
            $('#cell-' + n).attr('style', 'background: url("' + cart[i] + '") round rgba(0,0,0,.8)');
          }
        }
        if ($('#cell-' + n).css("background-image") != 'url("' + window.location.toString() + '")') {
          $('#cell-' + n).css("font-size", "0px");
          $('#cell-' + n).css("cursor", "default");
        }
 
        if ((cart.entr_b / cart.bet_number) * 100 <= 80 && (cart.entr_b / cart.bet_number) * 100 >= 40) {
          $('#progress_bar').addClass('yellow');
        }
 
        if ((cart.entr_b / cart.bet_number) * 100 >= 80) {
          $('#progress_bar').addClass('red');
        }
 
        if (n == cart.bet_number) {
          $('#progress_bar').css('width', cart.progress_entr_b + '%');
          document.getElementById('entr_bets').innerHTML = cart.entr_b;
        }
 
        if (cart.refresh == "true") {
          clearInterval(intervalID);
          localStorage.setItem('stopInterval', true);
          location.reload();
        }
      }
 
    })
 
  }, 1000);
 
}
Добавлено через 7 минут
Честно говоря, я мало понимаю, что вы пытаетесь сделать.) Может быть есть какой-нибудь более изящное решение.

Добавлено через 8 минут
Hrustik, Тут явно что-то не так. У вас там какие-то процессы загрузки. Тут нужно делать не через setInterval
0
2 / 2 / 2
Регистрация: 29.05.2013
Сообщений: 143
03.02.2017, 20:27  [ТС]
sad67man, setInterval у меня используется для того чтобы обновлять каждый раз данные элементов на экране(прогрес бар, ячейки..) которые берутся с базы данных

Добавлено через 13 минут
sad67man, В принципе эту задачу можно решить и без перезагрузки, раз нельзя никак ту переменную вывести за пределы функции, нужно только кое что переделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2017, 20:27
Помогаю со студенческими работами здесь

Не удается вытащить переменную
Добрый день, вернее ночи уже) Что то у меня глюки какие-то в программе. Помогите с игрой. Игра в приложении к теме main.zip. Это гонки,...

Как вытащить переменную из if?
Как вытащить переменную из if? А также из циклов. Например: string A= &quot;loloooLdggd&quot;; int t = A.IndexOf('L'); if(t&gt;0){ int g...

Вытащить число в переменную
Здравствуйте! надо вытащить число в переменную. Возвращает -1, хотя в таблице 1944 записи, в чем ошибка? static void Main(string...

Вытащить значение из input в переменную
Привет! Вроде бы простой вопрос, но погуглив, вразумительного ответа не нашел. Значит, есть 2 поля - нужно их значение value по нажатию...

Вытащить из html документа переменную
Всем привет, помогите вытащить из html документа значение переменной &lt;meta property=&quot;al:ios:url&quot;...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru