Как сделать отступы в списке?
Есть список, внутри которого есть еще списки, а внутри него еще списки... ну и так далее. Содержимое каждого элемента списка взято в 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>
|
Могу предложить код на "чистом 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>
|
А если мне нужно не все div, а только дивы внутри определенного контйнера?)
|
var allDivs = document.getElementById('wrapper').getElementsByTagName('div')
|
| Часовой пояс GMT +3, время: 12:23. |