Смена классов у элементов
Есть такой код:
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:21. |