Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Изменение значения переменной в режиме реального времени (https://javascript.ru/forum/jquery/61792-izmenenie-znacheniya-peremennojj-v-rezhime-realnogo-vremeni.html)

The_FactioN 09.03.2016 12:02

Изменение значения переменной в режиме реального времени
 
Добрый день. Работаю с jQ переменными. Столкнулся с такой проблемой.
Есть див блок с отступами css (top). Это свойство изменяется с прокруткой колесико мыши. Вешаю значение свойства в переменную, провожу if сравнение, вывожу то что надо. Примерный код выглядит примерно так

Код:

var str_d = - WindowsHeight
        var str_h = parseInt($('#mCSB_1_container').css('top')) -10
if(str_d > str_h){
$('#strelka').removeClass().addClass('blue')       
}else{
$('#strelka').removeClass().addClass('white')
}
}

WindowsHeight - переменная высоты окна браузера (проблема не в ней). Проблема в переменной str_h, мне нужно постоянно проверять наличие отступов у элемента #mCSB_1_container, если оно больше значения переменной str_h, то выводить то, что мне надо (это все как надо прописано в if)

Пытался повесить все это на setInterval, работает, но я боюсь ставить период setInterval в единицу (вдруг браузер взорвется). В связи с этим у меня два вопроса: не взорвется ли браузер, если я поставлю период интервала в одну миллисекунду?(т.е. не сожрутся ли ресурсы браузера) и есть ли альтернативное решение, дабы постоянно проверять отступы? Или перезаписывать значение переменной, если отступ изменился

рони 09.03.2016 12:17

Цитата:

Сообщение от The_FactioN
В связи с этим у меня два вопроса: не взорвется ли браузер, если я поставлю период интервала в одну миллисекунду?

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

destus 09.03.2016 12:18

Цитата:

Это свойство изменяется с прокруткой колесико мыши
а событие никак это не отследить? https://learn.javascript.ru/mousewheel
Цитата:

но я боюсь ставить период setInterval в единицу
даже если вы ставите 1ms, это не значит что именно 1 ms будет. Там вроде минимум 4ms или 10ms. Но можно и 0 ms иммитировать, через window.postMessage http://dbaron.org/log/20100309-faster-timeouts

The_FactioN 09.03.2016 12:20

Цитата:

Сообщение от рони (Сообщение 410367)
бесполезно, браузер так не умеет и ему будет тяжело.
зачем интервал ... на прокрутку и вешайте ваши замеры и изменения

Нет, нельзя повешать на прокрутку колесико (я подключил сторонний плагин изменения дизайна скроллинга, который игнорирует функцию .scroll


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