Оптимизация скрипта
Все привет!
На сайте есть два меню слева и справа с разными 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 и стремлюсь к совершенству. Вопрос, все ли здесь корректно и целесообразно, и можно ли каким-то образом сократить? |
Можно... Вот так например.
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 строки, несколько байт, и возможно какая-то (очень мелкая) единица времени. Каждый программирует по разному, а если код нормально работает то лучше его не трогать... |
А если сделать функции именованными - лучше не станет?
|
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'; } |
Погуглил сейчас про метод querySelectorAll, но так и не понял, это из jQuery или чистый JS? Если JS, то какими браузерами поддерживается?
|
Николай II, чистый JS.
Цитата:
|
Большое спасибо!
|
Часовой пояс GMT +3, время: 03:04. |