Оптимизация скрипта
Все привет!
На сайте есть два меню слева и справа с разными 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, время: 23:58. |