ФорумПрограммированиеJavaScript → JS вкладки

JS вкладки

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 13 января 2010 г. 1:10

    Добрый день. В JS мало что понимаю, но понимания хватило на то что бы взять готовый скрипт и немножко поправить. Это вкладки на страницы.

    Все работает только вот есть проблема. Хочу что бы положение закладки сохранялось. Сейчас по умолчанию открывается первая. Есть идеи использовать куки… Но как не знаю… Да что уж тут… И разбираться времени нет… Подскажите пожалуйста кому не трудно.


    body {margin-top: 0px; margin-left: 0px}

    .bmc{font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; border-right:solid #CCCCCC 1px; border-bottom:solid #CCCCCC 1px; padding:1px 5px;cursor:hand;}

    .bmcsel{font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; border-right:solid #CCCCCC 1px; border-bottom:solid #CCCCCC 1px; padding:1px 5px;background: #E2E2E2;}

    .bm{font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; padding:`px 5px;width:300px;background: #FFFFFF;margin-top:3px;}




    setbm = function(){
    var i = 2;
    while(document.getElementById('bm'+i)!=null){
    document.getElementById('bm'+i).style.display='none';
    i++;
    }
    }
    actbm = function(aid){
    var i = 1;
    while(document.getElementById('bm'+i)!=null){
    if(i!=aid){
    document.getElementById('bm'+i).style.display='none';
    document.getElementById('bmc'+i).className='bmc';
    } else {
    document.getElementById('bm'+i).style.display='block';
    document.getElementById('bmc'+i).className='bmcsel';
    }
    i++;
    }
    }



    <div>
    <table width="939" height="31" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="190" bgcolor="#F4F4F4" class="bmcsel" id="bmc1" onclick="actbm(1)"><div align="center">Главная</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc2" onclick="actbm(2)"><div align="center">Каталог товаров</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc3" onclick="actbm(3)"><div align="center">Предоставляемые услуги</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc4" onclick="actbm(4)"><div align="center">Об интернет-магазине</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc5" onclick="actbm(5)"><div align="center">Правила работы</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc6" onclick="actbm(6)"><div align="center">Контакты</div></td>
    <td width="190" bgcolor="#F4F4F4" class="bmc" id="bmc7" onclick="actbm(7)"><div align="center">Новости, статьи</div></td>
    </tr>
    </table>
    <div id="bm1" class="bm">Содержимое вкладки 1</div>
    <div id="bm2" class="bm">Содержимое вкладки 2</div>
    <div id="bm3" class="bm">Содержимое вкладки 3</div>
    <div id="bm4" class="bm">Содержимое вкладки 4</div>
    <div id="bm5" class="bm">Содержимое вкладки 5</div>
    <div id="bm6" class="bm">Содержимое вкладки 6</div>
    <div id="bm7" class="bm">Содержимое вкладки 7</div>
    </div>


    setbm();
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 1:16, спустя 6 минут 21 секунду

    Есть идеи использовать куки… Но как не знаю

    вообщето все просто.
    в куки ложим какойнить идентификатор, который нам говорит какая вкладка сейчас открыта.
    при рефреше странички сначала смотрим на куки, если там чтото есть для нас, делаем "нашу" вкладку открытой.
    все.
    а по поводу как поставить куки в JS то вот js setcookie
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 1:22, спустя 5 минут 36 секунд

    Самое простое назначение:
    document.cookie = 'cid=' + aid


    можешь тут ознакомится http://www.codenet.ru/webmast/js/Cookies.php
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 13 января 2010 г. 1:26, спустя 3 минуты 31 секунду


    setbm = function(){
    var i = 2;
    while(document.getElementById('bm'+i)!=null){
    document.getElementById('bm'+i).style.display='none';
    i++;
    }
    }
    actbm = function(aid){
    var i = 1;
    while(document.getElementById('bm'+i)!=null){
    if(i!=aid){
    document.getElementById('bm'+i).style.display='none';
    document.getElementById('bmc'+i).className='bmc';
    } else {
    document.getElementById('bm'+i).style.display='block';
    document.getElementById('bmc'+i).className='bmcsel';
    }
    i++;
    }
    }



    А куда все это дело которые вы предложили вставить в этом коде?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 1:49, спустя 22 минуты 59 секунд

    smv, а когда тебе надо запоминать ид-вкладки?
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 13 января 2010 г. 1:51, спустя 2 минуты 3 секунды

    После первого нажатия на вкладку. Т.е. пока нажатия на вкладку нет… то и куки нет… (например как при за хаоде на страничку) Как только вкладка нажата то записать в куки… Нажали на другую вкладку - переписать куки.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 1:58, спустя 7 минут 29 секунд

    smv, ну вот ты сам на свой вопрос и ответил.
    на онклик вешай ф-ию, которая будет ложить в куку ид.
    типа
    <a href="#" id="my_cool_tab" onclick="return myFunction(this)";>Tab_1</a>
    <javascript>
    function myFunction(element) {
    var el_id; // get id of specified element
    setCookie(el_id); // set this id to cookie
    }
    </javascript>
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 13 января 2010 г. 6:15, спустя 4 часа 16 минут 43 секунды


    smv, ну вот ты сам на свой вопрос и ответил.
    на онклик вешай ф-ию, которая будет ложить в куку ид.
    типа
    <a href="#" id="my_cool_tab" onclick="return myFunction(this)";>Tab_1</a>
    <javascript>
    function myFunction(element) {
    var el_id; // get id of specified element
    setCookie(el_id); // set this id to cookie
    }
    </javascript>



    На ссылку событие онклик вешать не хочу. У меня событие онклик есть на ячейку таблицы onclick="actbm(1)". По нажатию срабатывает функция которая и отвечает за выбор табов. (за присвоение им соответствующих стилей)


    setbm = function(){
    var i = 2;
    while(document.getElementById('bm'+i)!=null){
    document.getElementById('bm'+i).style.display='none';
    i++;
    }
    }
    actbm = function(aid){
    var i = 1;
    while(document.getElementById('bm'+i)!=null){
    if(i!=aid){
    document.getElementById('bm'+i).style.display='none';
    document.getElementById('bmc'+i).className='bmc';
    } else {
    document.getElementById('bm'+i).style.display='block';
    document.getElementById('bmc'+i).className='bmcsel';
    }
    i++;
    }
    }



    Вопрос такой… Вот есть у меня ячейка таблицы и ее id.


    <td width="190" bgcolor="#F4F4F4" class="bmcsel" id="bmc1" onclick="actbm(1)"><div align="center">Главная</div></td>


    каким свойством и какого объекта надо воспользоваться что бы выдернуть id?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 6:17, спустя 1 минуту 59 секунд

    я ссылку (впрочем как и всеь код) привел как пример.
    на что ты повесишь онклик это твое дело.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 8:19, спустя 2 часа 1 минуту 44 секунды

    и вообще заюзай http://docs.jquery.com/UI/Tabs
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 января 2010 г. 10:10, спустя 1 час 51 минуту 3 секунды


    и вообще заюзай http://docs.jquery.com/UI/Tabs
    ага
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 14 января 2010 г. 4:17, спустя 18 часов 7 минут 3 секунды

    а может кто нибудь подскажет как этот скрипт подправить?
    В частности вот эту часть:

    setbm = function(){
    var i = 2;
    while(document.getElementById('bm'+i)!=null){
    document.getElementById('bm'+i).style.display='none';
    i++;
    }
    }
    actbm = function(aid){
    var i = 1;
    while(document.getElementById('bm'+i)!=null){
    if(i!=aid){
    document.getElementById('bm'+i).style.display='none';
    document.getElementById('bmc'+i).className='bmc';
    } else {
    document.getElementById('bm'+i).style.display='block';
    document.getElementById('bmc'+i).className='bmcsel';
    }
    i++;
    }
    }
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 14 января 2010 г. 5:05, спустя 48 минут 35 секунд

    Вам лень самому разобраться? Можно за 5 минут все вкурить, а вам просто лень… 2 дня уже над этой проблемой думаете, а там решение на 5 минут и пару строк кода.
    adw/0
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 14 января 2010 г. 5:12, спустя 6 минут 59 секунд

    да не лень… просто с javascript туговато у меня. Логика впринципе понятна… а синтаксис не очень… Ну если задача за 5 минут решается может поможете все таки? Очень бы вам был бы благодарен ))))))
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 января 2010 г. 5:20, спустя 7 минут 44 секунды


    Логика впринципе понятна… а синтаксис не очень…
    Ну и задавай тогда кокретные вопросы по синтаксису, а не "сделайте за меня" … больше толку будет.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!