Есть меню сайта
<ul>
<li>Меню1</li>
<li>Меню2</li>
<li>Меню3
<li>ДочМеню3</li>
<li>ДочМеню3</li>
<li>ДочМеню3</li>
</li>
</ul>
Если в Меню3 будут еще дочерние элементы, то их обернуть в <ul class="sub"></ul>
<ul>
<li>Меню1</li>
<li>Меню2</li>
<li>Меню3
<ul class="sub">
<li>ДочМеню3</li>
<li>ДочМеню3</li>
<li>ДочМеню3</li>
<ul>
</li>
</ul>
Как правильно написать на js? Спасибо!
Проблема в том, что браузер как только натыкается на новый открытый <li>
, когда предыдущий еще не закрыт - автоматически закрывает его, потом только идет дальше. Поэтому изначально не может быть такой ситуации, чтобы li были внутри других... поэтому можно заранее записать их в виде div, а подменить на li только после добавления ul.
var ul = document.getElementById('ul');
var li = ul.querySelectorAll('li');
for( var i = 0; i < li.length; i++ ){
var div = li[i].querySelector('div');
if( div ){ //Если внутри очередного li есть div...
var x = li[i];
// здесь методы вставки HTML не прокатят, потому что браузер автоматически
// дописывает теги и мешает. Поэтому только регулярки.
x.outerHTML = x.outerHTML.replace(/<div>/, '<ul class="sub"><div>')
.replace(/<\/li>/, '</ul></li>')
.replace(/(<|<\/)div>/g,"$1li>");
// $1 указывает на то, что в скобках, внутри выражения
}
}
<ul id="ul">
<li>Меню1</li>
<li>Меню2</li>
<li>Меню3
<div>ДочМеню3</div>
<div>ДочМеню3</div>
<div>ДочМеню3</div>
</li>
</ul>
P.s. и я всё равно не представил, где в реальной жизни можно наткнуться на такую задачу.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне необходимо сделать с помощью WPF окошко, у которого нет заголовкаКазалось бы все просто WindowStyle=None, но есть один большой подводный камень,...
Точка находится внутри области, попробывал несколько методов, все определяють, что она извне
У меня есть Form с ComboBox и TextBoxПервый содержит имена столбцов, второй содержит текст для поиска
Использую дженерик репозиторий в проекте и и не могу понять как реализовать редактирование модели? Использую adonet и нигде не могу найти информацию...