Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.01.2010, 22:33
Новичок на форуме
Отправить личное сообщение для operatorr Посмотреть профиль Найти все сообщения от operatorr
 
Регистрация: 04.01.2010
Сообщений: 3

Помогите упростить скрипт.
Сам я не пишу на яве, поэтому решил сразу обратится к опытным людям.

Задача такая - есть меню навигации, нужно что бы активные разделы (на котором находится пользователь) отображались другим стилем. Под руку попался такой скрипт, но он слишком громоздкий, помогите его упростить.

<script>
                    var a=location.href,b=0;
                    if(a.indexOf('/ins/s-chem-veniki.html')!=-1){
                        b=1;
                        document.write('<span class="nav-menu-content-a"><a href="#">- веники</a></span><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<a href="#">- ароматы в парной</a><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    if(a.indexOf('/ins/s-chem-kosmetika.html')!=-1){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<span class="nav-menu-content-a"><a href="#">- косметика</a></span><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<a href="#">- ароматы в парной</a><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    if(a.indexOf('/ins/s-chem-prirodnaya-kosmetika.html')!=-1){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<span class="nav-menu-content-a"><a href="#">- природная косметика</a></span><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<a href="#">- ароматы в парной</a><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    if(a.indexOf('/ins/s-chem-mocalki.html')!=-1){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<span class="nav-menu-content-a"><a href="#">- мочалки</a></span><br />');
                        document.write('<a href="#">- ароматы в парной</a><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    if(a.indexOf('/ins/s-chem-aromati-v-parnoj.html')!=-1){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<span class="nav-menu-content-a"><a href="#">- ароматы в парной</a></span><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    if(a.indexOf('/ins/s-chem-ingridienti.html')!=-1){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<a href="#">- ароматы в парной</a></span><br />');
                        document.write('<span class="nav-menu-content-a"><a href="#">- ингредиенты</a></span>');
                        }
                    if(b==0){
                        b=1;
                        document.write('<a href="#">- веники</a><br />');
                        document.write('<a href="#">- косметика</a><br />');
                        document.write('<a href="#">- природная косметика</a><br />');
                        document.write('<a href="#">- мочалки</a><br />');
                        document.write('<a href="#">- ароматы в парной</a><br />');
                        document.write('<a href="#">- ингредиенты</a>');
                        }
                    </script>


Заранее благодарю за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2010, 00:48
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

это ж ппц как люди умудряются усложнять себе жинь просто. Нет слов
var a,i,url = ['veniki','kosmetika','prirodnaya-kosmetika','prirodnaya-kosmetika','mocalki','aromati-v-parnoj','ingridienti'],
  m = ['веники','косметика','природная косметика','мочалки','ароматы в парной','ингредиенты'];
for (i=0;i<m.length;i++) document.write(((a=location.href.indexOf('/ins/s-chem-'+url[i]+'.html'))!=-1 ? '<span class="nav-menu-content-a">':'')+'<a href="#">- '+m[i]+'</a>'+(a!=-1 ? '</span>':'')+'<br>');

Последний раз редактировалось PeaceCoder, 05.01.2010 в 00:56.
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2010, 03:36
Интересующийся
Отправить личное сообщение для Michael83 Посмотреть профиль Найти все сообщения от Michael83
 
Регистрация: 05.01.2010
Сообщений: 28

можно как то так
Вообще такие вещи наверное не стоит делать на javascript, хотя я не знаю деталей вашего случая.
Я бы написал так:
var menuItems = {
  '/ins/s-chem-veniki.html'                 : 'веники',
  '/ins/s-chem-kosmetika.html'              : 'косметика',
  '/ins/s-chem-prirodnaya-kosmetika.html'   : 'природная косметика',
  '/ins/s-chem-mocalki.html'                : 'мочалки',
  '/ins/s-chem-aromati-v-parnoj.html'       : 'ароматы в парной',
  '/ins/s-chem-ingridienti.html'            : 'ингредиенты'
};

var urlpath = document.location.pathname.toString();
var html = [];
for (var path in menuItems) {
  var itemHtml = '<a href="'+ path +'">- '+ menuItems[path] +'</a>';
  if (urlpath.indexOf(path) === 0) {
    itemHtml = '<span class="nav-menu-content-a">'+ itemHtml +'</span>';
  }
  html.push(itemHtml);
}
html = html.join('<br/>');
document.write(html);


P.S. не называйте яваскрипт явой (даже для краткости)
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2010, 12:42
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Michael83
if (urlpath.indexOf(path) === 0) {
а что будет, если перед /ins/ еще чето будет? ошибочка.

П.С. за оптимизацией не гнался, только минимизировал логику
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2010, 12:46
Интересующийся
Отправить личное сообщение для Michael83 Посмотреть профиль Найти все сообщения от Michael83
 
Регистрация: 05.01.2010
Сообщений: 28

Сообщение от PeaceCoder Посмотреть сообщение
а что будет, если перед /ins/ еще чето будет? ошибочка.

П.С. за оптимизацией не гнался, только минимизировал логику
да, не спорю, если эти пути не абсолютные, то конечно лучше написать >= 0 (или != -1). Мне показалось, что в этом случае они абсолютные, а если нет, то автор топика надеюсь разберется в коде и сам поправит.
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2010, 12:52
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Сообщение от Michael83
Вообще такие вещи наверное не стоит делать на javascript
Ага. Особенно навигацию.
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2010, 12:57
Новичок на форуме
Отправить личное сообщение для operatorr Посмотреть профиль Найти все сообщения от operatorr
 
Регистрация: 04.01.2010
Сообщений: 3

Огромное спасибо Вам за помощь, очень признателен! Простите, учту, яваскрипт так яваскрипт.

Сегодня постараюсь разобраться.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите настроить скрипт раскрывающегося меню melomanfm Работа 6 10.08.2009 01:21
Помогите создать скрипт замены картинок при наведении курсора. SantaS Я не знаю javascript 3 05.06.2009 12:59
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05
tabber, скрипт вкладок, помогите с куками kolodkin Элементы интерфейса 0 18.04.2009 01:19