Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Скрипт древовидного списка (https://javascript.ru/forum/events/29649-skript-drevovidnogo-spiska.html)

Atmos 06.07.2012 01:39

Скрипт древовидного списка
 
Вот этот небольшой скрипт:
<script type="text/javascript">
    function UnHide( eThis ){
        if( eThis.innerHTML.charCodeAt(0) == 43 ){
            eThis.innerHTML = '−'
            eThis.parentNode.parentNode.parentNode.className = '';
        }else{
            eThis.innerHTML = '+'
            eThis.parentNode.parentNode.parentNode.className = 'cl';
        }
        return false;
    }
</script>

в своем оригинальном примере прекрасно работает. Однако, стоило выкинуть из примера div'ы и увеличить количество уровней, то список потерял функционал - только маркеры свернуто/развернуто меняются, не разворачивая текст. Мой список: http://learn.javascript.ru/play/S3fpab
Если же убрать класс .cl для пунктов списка (http://learn.javascript.ru/play/YbGrdb), то текст наоборот виден, а +/- текст не сворачивает, т.е. display: none для .cl тупо прячет пункты, а скрипт не вовлекается в это вовсе.

Подскажите пожалуйста, как подрихтовать скрипт под мой список.
Заранее благодарен.

lord2kim 06.07.2012 10:27

Цитата:

Сообщение от Atmos (Сообщение 186644)
Вот этот небольшой скрипт:
<script type="text/javascript">
    function UnHide( eThis ){
        if( eThis.innerHTML.charCodeAt(0) == 43 ){
            eThis.innerHTML = '−'
            eThis.parentNode.parentNode.parentNode.className = '';
        }else{
            eThis.innerHTML = '+'
            eThis.parentNode.parentNode.parentNode.className = 'cl';
        }
        return false;
    }
</script>

в своем оригинальном примере прекрасно работает. Однако, стоило выкинуть из примера div'ы и увеличить количество уровней, то список потерял функционал - только маркеры свернуто/развернуто меняются, не разворачивая текст. Мой список: http://learn.javascript.ru/play/S3fpab
Если же убрать класс .cl для пунктов списка (http://learn.javascript.ru/play/YbGrdb), то текст наоборот виден, а +/- текст не сворачивает, т.е. display: none для .cl тупо прячет пункты, а скрипт не вовлекается в это вовсе.

Подскажите пожалуйста, как подрихтовать скрипт под мой список.
Заранее благодарен.

div-ы убрал, увеличил кол-во уровней, соответственно количество parentNode нужно увеличить/уменьшить, чтобы они попадали именно на тот элемент, у которого необходимо атрибут class поменять

Atmos 06.07.2012 22:05

Значит, скрипт меняет класс пункта по нажатию, делая его восприимчивым/ невосприимчивым к display: none.
Спасибо за совет, после удаления одного .parentNode всё заработало. Хотя раньше я плюс-минус два .parentNode менял - не работало. Ну да ладно =)
Ещё раз спасибо!

Deff 06.07.2012 22:17

Atmos,
Есть на jQuery - если интересно => http://javascript.ru/forum/dom-windo...vigacii-3.html

Atmos 07.07.2012 16:18

Deff,
Спасибо, менюшка покруче, конечно, но мне слишком сложно, да и цель у меня другая - редактирование текста, а не сайтостроение.

Atmos 15.07.2012 12:54

Конечный результат, авось, кому пригодится: http://learn.javascript.ru/play/MyNhu

Deff 15.07.2012 13:04

Симпатично


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