ФорумПрограммированиеJavaScript → Помогите с JS пожалуйста(переключалка)

Помогите с JS пожалуйста(переключалка)

  • Z-MODe

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

    Spritz 6 мая 2008 г. 17:24

    Я вообще не знаю JS=( но надо сделать переключалку..
    Допустим такую структуру:
    Название
    описание(по умолчанию скрыто)

    Название
    описание(по умолчанию скрыто)

    Название
    описание(по умолчанию скрыто)

    Нажимаем по названию, вылазит описание.
    Нажимаем по другому названию, если уже хотябы одно описание открыто то надо его закрыть и открыть необходимое..

    Чего я нарыл…

    собственно переключалку:
    function toggle(obj) {

    var el = document.getElementById(obj);
    if ( el.style.display != 'none' ) {
    el.style.display = 'none';
    }
    else {
    el.style.display = '';
    }
    }


    и больше ничего=((( и даже не знаю как её заюзать..

    предпологаю что так:
    <a href="#" onClick="toggle('item1')">Название</a>
    <div id="item1" style="display:none;">Описание</div>

    Вытекают вопрос как пройтись по допустим известному и прешедшему из пхп массиву с id всех блоков которые могут переключатся, или это не принципиально для JS?

    И как оказалось такое в опере не работает, как быть?(

    Заранее очень признателен за помощ!
  • md5

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

    Spritz 6 мая 2008 г. 21:24, спустя 4 часа 19 секунд


    function toggle(obj) {
    var el = document.getElementById(obj);
    el.style.display = (el.style.display != 'none') ? 'none' : 'block';
    }

    block

    Вытекают вопрос как пройтись по допустим известному и прешедшему из пхп массиву с id всех блоков которые могут переключатся, или это не принципиально для JS?

    зачем это? чтобы скрыть остальные чтоли?
    все умрут, а я изумруд
  • Z-MODe

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

    Spritz 7 мая 2008 г. 2:20, спустя 4 часа 56 минут

    Ага именно что бы скрыть остальные
  • md5

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

    Spritz 7 мая 2008 г. 2:35, спустя 14 минут 20 секунд

    я бы все эти элементы засунул бы в один <div>
    и для очистки бы проходится по всем элементам этого дива и скрывал их, а затем включал нужный
    все умрут, а я изумруд
  • Z-MODe

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

    Spritz 7 мая 2008 г. 2:38, спустя 2 минуты 45 секунд

    Не проблема засуну.. но вопрос актуален, а как пройтись по ним и закрыть? допустим вот


    <div id=toggles>
    <a href="#" onClick="toggle('item1')">Название1</a>
    <div id="item1" style="display:none;">Описание1</div>
    <a href="#" onClick="toggle('item2')">Название2</a>
    <div id="item2" style="display:none;">Описание2</div>
    </div>


    Извините, но реально ЖС не знаю=(
  • md5

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

    Spritz 7 мая 2008 г. 2:43, спустя 5 минут 15 секунд

    да я тоже его не знаю
    как-то там с child надо
    щас джс-гуру скажут…
    все умрут, а я изумруд
  • mechanic

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

    Spritz 7 мая 2008 г. 5:27, спустя 2 часа 44 минуты 36 секунд

    для случая, когда ID элементов составляют правильную арифметическую прогрессию ) можно так
    i = 1;
    while(myitem = document.getElementById('item'+i)) { //этот цикл скроет все дивы от item1 до …
    myitem.style.display = 'none';
    i++;
    }

    типо тово?
  • md5

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

    Spritz 7 мая 2008 г. 5:50, спустя 22 минуты 22 секунды

    ну это ж не круто… ))
    все умрут, а я изумруд
  • sap

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

    Spritz 7 мая 2008 г. 6:03, спустя 13 минут 35 секунд

    Ну еще можно извратиться, сформировать javascript в цикле на пхп чтобы он дисплейнонил все дивы =)
    Но проще, конечно, сформировать id дивов в правильном порядке, как сказал mechanic =)
  • md5

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

    Spritz 7 мая 2008 г. 6:29, спустя 25 минут 19 секунд

    ну тогда уж пользователя заставить закрыть все дивы и открыть нужный )
    все умрут, а я изумруд
  • sap

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

    Spritz 7 мая 2008 г. 6:33, спустя 4 минуты 38 секунд

    =))))))))
  • md5

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

    Spritz 7 мая 2008 г. 6:41, спустя 7 минут 18 секунд

    я представляю себе меню с вылетающими подсказками слева и справа, типа, товарищь, чтобы открыть подменю этого пункта, сначала закрой предыдущее, а за одно и все остальные, если понаоткрывал!! :)
    все умрут, а я изумруд
  • sap

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

    Spritz 7 мая 2008 г. 6:47, спустя 5 минут 58 секунд

    Только тогда нужно поставить проверку, чтобы пока одно подменю юзер не закрыл, другие не открывались =))

    [offtop]
    md5, чего в конфу не заходишь? :)
    [/offtop]
  • Z-MODe

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

    Spritz 7 мая 2008 г. 6:48, спустя 58 секунд

    Огромное спасибо! работает..

    собственно что в итоге получилось…


    <script type="text/javascript">
    function toggle(obj) {
    i = 1;
    while(myitem = document.getElementById('item'+i)) { //этот цикл скроет все дивы от item1 до …
    myitem.style.display = 'none';
    i++;
    }
    var el = document.getElementById(obj);
    el.style.display = (el.style.display != 'none') ? 'none' : 'block';
    }
    </script>



    А вот сразу вопрос в догонку…
    вот этот самый номер является ID в базе, если что то из неё удалят то соотвественно из струкруры пропадёт один номер. Это скажется как нибудь на цикле?
    Если да, то как этого избежать на яваскрипте, или всё таки парсить на шаблон лучше обычную переменную в цикле ??
  • md5

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

    Spritz 7 мая 2008 г. 6:56, спустя 8 минут 12 секунд

    ну хоть массив ID'шников сделай и передавай
    все умрут, а я изумруд

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