Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Множественное повторение (https://javascript.ru/forum/dom-window/10034-mnozhestvennoe-povtorenie.html)

Black_Sun 16.06.2010 14:44

Множественное повторение
 
Собственно сделал скрипт, работает и претензий нет, но есть фрагмент кода который повторяется много раз, почти одинаковый.
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 то не получилось, может есть какой специальный способ?

exec 16.06.2010 15:15

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);
	}
}

Kolyaj 16.06.2010 15:25

Цитата:

Сообщение от exec
tooltip.show(x);

Взорвётся. x всегда будет браться из последнего ad.

Black_Sun 16.06.2010 16:07

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


Часовой пояс GMT +3, время: 13:41.