@oelena

Как вывести содержимое массива со всеми тегами и стилями?

Добрый день, подскажите, как вывести на экран содержимое массива, в таком виде, в каком мы его первоначально собрали с сайта(теги и классы)

Есть html. В самой первой ul у нас всегда 15 элементов. В других может быть от 0 до бесконечности. Но показываться должно не более 15. Сделала с помощью css (overflow-y: hidden), чтоб больше положенного не отображалось.
<ul class="product-menu__list">
										<li class="product-menu__item">
											<a href="javascript:;" class="product-menu__item_link">Элемент элемент1</a>
											<ul class="dropdown-menu js-first-lev">
												<li class="dropdown-menu__item">
													<a class="dropdown-menu__item-link" href="javascript:;">Элемент элемент1</a>
												</li>
												<li class="dropdown-menu__item">
													<a class="dropdown-menu__item-link" href="javascript:;">Какой-то элемент большой</a>
												</li>
											</ul>
										</li>
									</ul>


Далее написала js где собрала массив с этих элементов, и создала кнопку, по которой должен прокручиваться массив показывая нужные элементы. Добавила кнопку в массив. Но не могу разобраться как отобразить массив на экране (в консоли то массив с кнопкой), а на сайте кнопка не отображается.
var dropDownMenuItems = Array.prototype.slice.call(document.querySelectorAll('.dropdown-menu__item'));
var productMenuItems = Array.prototype.slice.call(document.querySelectorAll('.product-menu__item'));

for(var productMenuItem of productMenuItems) {
	productMenuItem.onmouseenter = function (evt) {
			if(this.querySelector('.js-first-lev')) {
				var arrayProductMenuItem = Array.prototype.slice.call(this.lastChild.querySelectorAll('.js-first-lev > .dropdown-menu__item'));
				if(arrayProductMenuItem.length > 14) {
					var newButtonDown = document.createElement('li');
					newButtonDown.innerHTML = "<a> Показать еще </a>";
					newButtonDown.className = "dropdown-menu__item  dropdown-menu__item--grey without-dropdown";
					console.log(newButtonDown);
					arrayProductMenuItem.splice(14, 1, newButtonDown)
				}
				// this.lastChild.innerHTML = arrayProductMenuItem;


			}

	};
};


Может кто еще подскажет, как это написать более универсально, уровней 2, а у меня получается на каждый уровень надо писать такую штуку, потому что иначе отображается внутри элемента абсолютно все dropdown-menu__item (даже которые на 2 уровне), а мне надо только конкретно детей, не заходя в них глубже
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 1
Tim-A-2020
@Tim-A-2020
После формирования нового элемента вы не добавляете элемент в документ
productMenuItems[0].append(newButtonDown)

p.s она может много добавить в вашем коде
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы