Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сделать отступы в списке? (https://javascript.ru/forum/jquery/11985-kak-sdelat-otstupy-v-spiske.html)

Kenshi25 24.09.2010 17:24

Как сделать отступы в списке?
 
Есть список, внутри которого есть еще списки, а внутри него еще списки... ну и так далее. Содержимое каждого элемента списка взято в div. Нужно проставить отступы (margin-left) для div, но так, чтобы за каждую степень вложенности списка отступ увеличивался на N. Знаю, можно сделать через css, но в моем случае это не подойдет.

<ul>
    <li><div>a1</div>
        <ul>
            <li><div>b1</div>
                <ul>
                    <li><div>c1</div></li>
                    <li><div>c2</div></li>
                    <li><div>c3</div></li>
                </ul>
            </li>
            <li><div>b2</div></li>
            <li><div>b3</div></li>
        </ul>
    </li>
    <li><div>a2</div>
    <li><div>a3</div>
</ul>

Sweet 24.09.2010 18:24

Могу предложить код на "чистом javascript". Может поможет:)
<style>
UL { margin: 0px; }
LI { list-style-type: none; }
</style>
<ul>
  <li><div>a1</div>
    <ul>
      <li><div>b1</div>
        <ul>
          <li><div>c1</div></li>
          <li><div>c2</div></li>
          <li><div>c3</div></li>
        </ul>
        </li>
        <li><div>b2</div></li>
        <li><div>b3</div></li>
      </ul>
    </li>
  <li><div>a2</div>
  <li><div>a3</div>
</ul>
<script>
var allDivs = document.getElementsByTagName('div')
for(var i = 0; i < allDivs.length; i++){
  var element = allDivs[i], count = 0
  while(element){
    if(element.tagName == 'UL') count++
    element = element.parentNode
  }
  allDivs[i].style.marginLeft = 30*count + 'px'
}
</script>

Kenshi25 24.09.2010 19:01

А если мне нужно не все div, а только дивы внутри определенного контйнера?)

exec 24.09.2010 19:40

var allDivs = document.getElementById('wrapper').getElementsByTagName('div')


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