Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2010, 14:44
Аспирант
Отправить личное сообщение для Black_Sun Посмотреть профиль Найти все сообщения от Black_Sun
 
Регистрация: 29.04.2010
Сообщений: 68

Множественное повторение
Собственно сделал скрипт, работает и претензий нет, но есть фрагмент кода который повторяется много раз, почти одинаковый.
for(var i=0;i<ad.length;i++)
	{
	 if(ad[i].innerHTML=='∏')
		{
		 q=document.createElement("span");
		 ad[i].setAttribute('class', 'tor-icon tor-dup');
		 ad[i].setAttribute('onmouseover', 'tooltip.show('+dup2+')');
		 ad[i].setAttribute('onmouseout', 'tooltip.hide()');
         	 ad[i].parentNode.insertBefore(q,ad[i].nextSibling);
		}
	 else if(ad[i].className=='tor-icon tor-dup')
		{
		 q=document.createElement("span");
		 ad[i].setAttribute('class', 'tor-icon tor-dup');
		 ad[i].setAttribute('onmouseover', 'tooltip.show('+dup+')');
		 ad[i].setAttribute('onmouseout', 'tooltip.hide()');
         	 ad[i].parentNode.insertBefore(q,ad[i].nextSibling);
		}

	}
for(var i=0;i<ad.length;i++)
	{
	 if(ad[i].className=='tor-icon tor-need-edit')
		{
		 q=document.createElement("span");
		 ad[i].setAttribute('class', 'tor-icon tor-need-edit');
		 ad[i].setAttribute('onmouseover', 'tooltip.show('+neededit+')');
		 ad[i].setAttribute('onmouseout', 'tooltip.hide()');
         	 ad[i].parentNode.insertBefore(q,ad[i].nextSibling);
		}

	}

вот и из-за этого скрипт получился длинный, возможно как-то уменьшить? пробовал с массивом, но т.к. всё итак находится внутри for то не получилось, может есть какой специальный способ?
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2010, 15:15
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

for (var i = 0; i < ad.length; i++) {
	if (ad[i].innerHTML == '∏' || ad[i].className == 'tor-icon tor-dup' || ad[i].className == 'tor-icon tor-need-edit') {
		x = ad[i].innerHTML == '∏' ? dup2: ad[i].className == 'tor-icon tor-dup' ? dup : neededit;
		cls = ''tor-icon ' + (ad[i].className == 'tor-icon tor-need-edit' ? 'tor-need-edit': 'tor-dup');
		q = document.createElement("span");
		ad[i].className = cls,
		ad[i].onmouseover = function () {
			tooltip.show(x);
		},
		ad[i].onmouseout = function () {
			tooltip.hide();
		},
		ad[i].parentNode.insertBefore(q, ad[i].nextSibling);
	}
}

Последний раз редактировалось exec, 16.06.2010 в 15:21.
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2010, 15:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от exec
tooltip.show(x);
Взорвётся. x всегда будет браться из последнего ad.
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2010, 16:07
Аспирант
Отправить личное сообщение для Black_Sun Посмотреть профиль Найти все сообщения от Black_Sun
 
Регистрация: 29.04.2010
Сообщений: 68

exec,
Кул, спс, по примеру попробую разобораться, т.к. это был фрагмент кода там 9 штук tor-icon tor-* и 2 сравнения с innerHTML
Kolyaj,
Согласен, таких элементов на странице полно до 50 бывает до 100 или больше.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование - миф или реальность?! B~Vladi Оффтопик 109 04.09.2012 16:13
Повторение в бегущей строке DSL88 Я не знаю javascript 7 24.05.2009 23:24