Вы можете просто получить элементы <li>
первого уровня, а также элементы <li>
второго уровня, используя дочерний комбинатор >
для родительского элемента <ul>
первого уровня и второго level <ul>
родительский элемент, и теперь вы можете просто l oop через каждый элемент списка и добавить имя класса соответственно следующим образом:
const firstLevel = document.querySelectorAll('.nav1-1 > li');
const secondLevel = document.querySelectorAll('.nav1-2 > li');
for (var i = 0; i < firstLevel.length; i++) {
firstLevel[i].classList.add('n11');
}
for (var i = 0; i < secondLevel.length; i++) {
secondLevel[i].classList.add('n12');
}
<ul class="nav1-1">
<li ><a href="">1.1.</a></li>
<li ><a href="">1.2</a>
<ul class="nav1-2">
<li><a href="">1.2.1</a></li>
<li><a href="">1.2.2</a></li>
</ul>
</li>
<li><a href="">1.3</a>
<ul class="nav1-2">
<li><a href="">1.3.1</a></li>
<li><a href="">1.3.2</a></li>
</ul>
<li><a href="">1.4</a></li>
</ul>
Если вам не нужна совместимость с IE 11 или вы используете компилятор JavaScript, такой как Babel, вы можете еще больше сократить и упростить выше JavaScript с использованием метода forEach () и функций стрелок, таких как:
const firstLevel = document.querySelectorAll('.nav1-1 > li');
const secondLevel = document.querySelectorAll('.nav1-2 > li');
firstLevel.forEach(e => e.classList.add('n11'));
secondLevel.forEach(e => e.classList.add('n12'));
<ul class="nav1-1">
<li ><a href="">1.1.</a></li>
<li ><a href="">1.2</a>
<ul class="nav1-2">
<li><a href="">1.2.1</a></li>
<li><a href="">1.2.2</a></li>
</ul>
</li>
<li><a href="">1.3</a>
<ul class="nav1-2">
<li><a href="">1.3.1</a></li>
<li><a href="">1.3.2</a></li>
</ul>
<li><a href="">1.4</a></li>
</ul>