Смена классов у элементов
Есть такой код:
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); }); Суть в том что по таймауту запрашиваются данные с сервера и в зависимости от полученных чисел меняется класс элемента. Не работает смена классов, почему не понимаю, проблема видимо в куске с условиями... Буду рад подсказкам. |
зачем парсить целое число во флоат? и что это за условия a < b < c? Оператор сравнения выполняется для двух операндов. У вас получается он сравнивает два операнда, возвращает true или false и сравнивает с третьим операндом, тем самым преобразуя логическое значение в 0 или 1.
|
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'); } Может так заработает? |
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); }); Итоговый вариант. Спасибо за подсказку по удалению класса, забыл что можно указать через пробел. |
Часовой пояс GMT +3, время: 23:16. |