Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2016, 18:20
Новичок на форуме
Отправить личное сообщение для Staruy Посмотреть профиль Найти все сообщения от Staruy
 
Регистрация: 29.01.2016
Сообщений: 2

Смена классов у элементов
Есть такой код:
function show()
{
    $.getJSON( "ajax/temp" )
        .done(function( json ) {
            $.each($('.temp'), function() {
                var name_dat = this.id;
                var temp_dat = parseFloat(json.data[name_dat]);
                $(this).find('.text_temp').html(temp_dat);
                $(this).removeClass('alert-danger');
                $(this).removeClass('alert-warning');
                $(this).removeClass('alert-success');
                $(this).removeClass('alert-info');
                if(temp_dat > '30') {
                    $(this).addClass('alert-danger');
                }
                if(parseFloat('25') < temp_dat < parseFloat('30')) {
                    $(this).addClass('alert-warning');
                }
                if(parseFloat('20') < temp_dat < parseFloat('25')) {
                    $(this).addClass('alert-success');
                }
                if(temp_dat < parseFloat('20')) {
                    $(this).addClass('alert-info');
                }
            });


        })
        .fail(function( jqxhr, textStatus, error ) {
            var err = textStatus + ", " + error;
            console.log( "Request Failed: " + err );
        });
}
$(document).ready(function(){
    setInterval('show()', 1000);
});


Суть в том что по таймауту запрашиваются данные с сервера и в зависимости от полученных чисел меняется класс элемента. Не работает смена классов, почему не понимаю, проблема видимо в куске с условиями...

Буду рад подсказкам.
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2016, 18:49
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

зачем парсить целое число во флоат? и что это за условия a < b < c? Оператор сравнения выполняется для двух операндов. У вас получается он сравнивает два операнда, возвращает true или false и сравнивает с третьим операндом, тем самым преобразуя логическое значение в 0 или 1.
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2016, 02:25
Аватар для Алексей Петрович
Аспирант
Отправить личное сообщение для Алексей Петрович Посмотреть профиль Найти все сообщения от Алексей Петрович
 
Регистрация: 29.11.2015
Сообщений: 83

var $this = $(this);
$this.removeClass('alert-danger alert-warning alert-success alert-info');
if(temp_dat > 30) {
  $this.addClass('alert-danger');
}
else if(temp_dat > 25) {
  $this.addClass('alert-warning');
}
else if(temp_dat > 20) {
  $this.addClass('alert-success');
}
else {
  $this.addClass('alert-info');
}


Может так заработает?
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2016, 12:16
Новичок на форуме
Отправить личное сообщение для Staruy Посмотреть профиль Найти все сообщения от Staruy
 
Регистрация: 29.01.2016
Сообщений: 2

function show()
{
    $.getJSON( "ajax/temp" )
        .done(function( json ) {
            $.each($('.temp'), function() {
                var name_dat = this.id;
                var temp_dat = parseFloat(json.data[name_dat]);
                $(this).find('.text_temp').html(temp_dat);
                $(this).removeClass('alert-danger alert-warning alert-success alert-info');
                switch (true) {
                    case temp_dat > parseFloat('30'):
                        $(this).addClass('alert-danger');
                        break;
                    case parseFloat('25') < temp_dat && temp_dat < parseFloat('30'):
                        $(this).addClass('alert-warning');
                        break;
                    case parseFloat('20') < temp_dat && temp_dat < parseFloat('25'):
                        $(this).addClass('alert-success');
                        break;
                    case temp_dat < parseFloat('20'):
                        $(this).addClass('alert-info');
                        break;
                }
            });
        })
        .fail(function( jqxhr, textStatus, error ) {
            var err = textStatus + ", " + error;
            console.log( "Request Failed: " + err );
        });
}
$(document).ready(function(){
    setInterval('show()', 1000);
});


Итоговый вариант. Спасибо за подсказку по удалению класса, забыл что можно указать через пробел.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена классов при наведении (постоянно) segajb jQuery 6 25.09.2014 08:18
Смена id у элементов obscurant jQuery 6 09.08.2013 16:25
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов Ирина Владимировна Общие вопросы Javascript 10 24.03.2012 18:18
Смена порядка элементов AnToxa Элементы интерфейса 27 08.09.2011 17:05