Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Помогите упростить скрипт. (https://javascript.ru/forum/project/6912-pomogite-uprostit-skript.html)

operatorr 04.01.2010 22:33

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

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

<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>


Заранее благодарю за помощь.

PeaceCoder 05.01.2010 00:48

это ж ппц как люди умудряются усложнять себе жинь просто. Нет слов
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>');

Michael83 05.01.2010 03:36

можно как то так
 
Вообще такие вещи наверное не стоит делать на 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. не называйте яваскрипт явой (даже для краткости) :nono: :)

PeaceCoder 05.01.2010 12:42

Цитата:

Сообщение от Michael83
if (urlpath.indexOf(path) === 0) {

а что будет, если перед /ins/ еще чето будет? ошибочка.

П.С. за оптимизацией не гнался, только минимизировал логику

Michael83 05.01.2010 12:46

Цитата:

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

П.С. за оптимизацией не гнался, только минимизировал логику

да, не спорю, если эти пути не абсолютные, то конечно лучше написать >= 0 (или != -1). Мне показалось, что в этом случае они абсолютные, а если нет, то автор топика надеюсь разберется в коде и сам поправит.

subzey 05.01.2010 12:52

Цитата:

Сообщение от Michael83
Вообще такие вещи наверное не стоит делать на javascript

Ага. Особенно навигацию.

operatorr 05.01.2010 12:57

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

Сегодня постараюсь разобраться.


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