Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2013, 13:03
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Оптимизация скрипта
Все привет!

На сайте есть два меню слева и справа с разными id, для них нужно было написать скрипт, который проверяет url страницы и сравнивает его с url в пунктах меню, чтобы затем присвоить при совпадении нужному пункту определенный стиль css.
Вот он:
window.onload = function () {
	activProduct();
	activService();
}

var activProduct = function () {
	var menuProduct =  document.getElementById("menu_product");
	var a =  menuProduct.getElementsByTagName("a");
	var tHref = location.href;
	for(var i=0; i < a.length; i++) {
		if (a[i].href==tHref) {
			a[i].className='menu-link_activ';
		}
	}
}

 var activService = function () {
	var menuService =  document.getElementById("menu_service");
	var a =  menuService.getElementsByTagName("a");
	var tHref = location.href;
	for(var i=0; i < a.length; i++) {
		if (a[i].href==tHref) {
			a[i].className='menu-link_activ';
		}
	}
}


Скрипт работает, но я активно изучаю JS и стремлюсь к совершенству.

Вопрос, все ли здесь корректно и целесообразно, и можно ли каким-то образом сократить?

Последний раз редактировалось Николай II, 21.10.2013 в 13:16.
Ответить с цитированием
  #2 (permalink)  
Старый 21.10.2013, 13:43
Профессор
Отправить личное сообщение для Гробовщик Посмотреть профиль Найти все сообщения от Гробовщик
 
Регистрация: 10.03.2013
Сообщений: 169

Можно... Вот так например.
window.onload = function () {
	activProduct();
	activService();
}

var activProduct = function () {
	var a =  document.getElementById("menu_product").getElementsByTagName("a");
	var tHref = location.href;
	for(var i=0; i < a.length; i++) {
		if (a[i].href==tHref) {
			a[i].className='menu-link_activ';
		}
	}
}

 var activService = function () {
	var a =  document.getElementById("menu_service").getElementsByTagName("a");
	var tHref = location.href;
	for(var i=0; i < a.length; i++) {
		if (a[i].href==tHref) {
			a[i].className='menu-link_activ';
		}
	}
}

Экономия 2 строки, несколько байт, и возможно какая-то (очень мелкая) единица времени. Каждый программирует по разному, а если код нормально работает то лучше его не трогать...
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2013, 14:00
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

А если сделать функции именованными - лучше не станет?
Ответить с цитированием
  #4 (permalink)  
Старый 21.10.2013, 14:05
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

window.onload = function() {
	var a = document.querySelectorAll('#menu_product a, #menu_service a'), i;
	for(i=0; i<a.length; i++) if(a[i].href == location.href) a[i].className = 'menu-link_activ';
}

Последний раз редактировалось ruslan_mart, 21.10.2013 в 14:08.
Ответить с цитированием
  #5 (permalink)  
Старый 21.10.2013, 14:12
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Погуглил сейчас про метод querySelectorAll, но так и не понял, это из jQuery или чистый JS? Если JS, то какими браузерами поддерживается?
Ответить с цитированием
  #6 (permalink)  
Старый 21.10.2013, 14:17
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Николай II, чистый JS.

Сообщение от Николай II
какими браузерами поддерживается?
http://caniuse.com/queryselector
Ответить с цитированием
  #7 (permalink)  
Старый 21.10.2013, 14:19
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Большое спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация скрипта Veritaspl Общие вопросы Javascript 9 07.06.2013 14:09
Оптимизация скрипта Беляш jQuery 3 11.07.2010 14:45
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03
как прекратить выполнение скрипта ? kefi Общие вопросы Javascript 3 31.03.2009 19:05