Показать сообщение отдельно
  #1 (permalink)  
Старый 09.02.2016, 09:13
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Уменьшить размер кода и работа setInterval.
Добрый день, делаю запросы серверу он отвечает в формате json, (значение температуры и статус(норма/авария)).
Далее это отображаю в div (на картинке svg)
И в случае аварии надо сделать мигание текста.
Так как про объекты и классы мало что знаю код получился такой:
GetSettingTimeout3('GetVar.CGI',CYCLIC,function () {
			var objJSON = eval('(' + this + ')');

			var TempHot = document.getElementById("IdT_Hot");
			var TextStatusT_Hot = document.getElementById("Id_StatusT_Hot");			
			//--------------------------------------------------------------------------------------
			TempHot.innerHTML="Т горячая="+objJSON.T_Hot+" \u2103";
			//--------------------------------------------------------------------------------------
			clearInterval(TimerID_blink[0]);
			if(objJSON.T_ST_Hot==0){	//Статус температуры 
				TempHot.setAttribute("fill",RGB_STATUS_NORM); //зеленый
				TextStatusT_Hot.setAttribute("fill",RGB_STATUS_NORM); //зеленый
				TextStatusT_Hot.innerHTML="Норма";
			}
			if(objJSON.T_ST_Hot==1){	//Статус температуры 
				TempHot.setAttribute("fill",RGB_STATUS_ADMONITION); //желтый				
				TextStatusT_Hot.setAttribute("fill",RGB_STATUS_ADMONITION); //желтый				
				TextStatusT_Hot.innerHTML="Норма";
			}
			if(objJSON.T_ST_Hot==2){	//Статус температуры 
				TimerID_blink[0]=setInterval(TextBlink,300);		 
			}

}



var ModeBlink=0;
function TextBlink(){
	var TempHot = document.getElementById("IdT_Hot");
	var TextStatusT_Hot = document.getElementById("Id_StatusT_Hot");
	if(ModeBlink==0){
		//-------------------------------
		TempHot.innerHTML="Т горячая="+"80"+" \u2103";
		TempHot.setAttribute("fill",RGB_STATUS_ERROR); //Красный
		TextStatusT_Hot.setAttribute("fill",RGB_STATUS_ERROR); //Красный
		TextStatusT_Hot.innerHTML="Авария";		
		//-------------------------------
		ModeBlink=1;
	}else{
		//-------------------------------
		TempHot.innerHTML=""
		TextStatusT_Hot.innerHTML="";		
		//-------------------------------
		ModeBlink=0;
	}
}


И тут возникает 3 вопроса:
1) Во что это можно завернуть это всё что бы применить к другим принимаемым данным.
2) Правильно ли я использую setInterval ? (не будет ли происходит накопление, и в следствии чего при изменении статуса аварии в норму мигание не остановится)
3) Как сделать асинхронную функцию TextBlink. Что бы можно было использовать в остальных авариях. И мигание происходило везде по своему таймеру.


Ps: Всего параметров около 10, и для каждого городить такой код не вариант, так как сильно увеличится размер файла, что для меня очень критично.

Последний раз редактировалось pokk, 09.02.2016 в 09:15.
Ответить с цитированием