簡體   English   中英

如何動態地將菜單項添加到彈出窗口?

[英]How to dynamically add menu items to a popup?

我需要使用下拉菜單實現 header。 header 中有三個菜單項,第四項是省略號。 將鼠標懸停在省略號上時,菜單會退出。 我怎樣才能實現這樣的功能 - 添加新菜單項時,最后第 3 項添加到彈出菜單中,並且在第 1 位會有一個新項。 現在在我的代碼中,如果有超過 3 個項目,我會動態添加 3 個點。 如何將菜單項添加到彈出窗口?

 // ===== ADAPTIVE MENU const headerMenu = document.querySelector(".header-menu__list"); const headerMenuLi = document.querySelectorAll(".header-menu__list li"); const headerMenuToArray = Array.from(headerMenuLi); const ellipsisLi = document.createElement("li"); ellipsisLi.classList.add("open-sub__menu"); const ellipsisA = document.createElement("a"); ellipsisA.innerHTML = "<span>...</span>"; const subMenu = document.createElement("ul"); subMenu.classList.add("header-sub__menu"); ellipsisLi.appendChild(ellipsisA); ellipsisLi.appendChild(subMenu); const addEllipsis = (arr) => { if (arr.length > 3) { headerMenu.children[2].after(ellipsisLi); } }; addEllipsis(headerMenuToArray);
 .header-sub__menu { background: #171a21 none repeat scroll 0 0; left: 0; opacity: 0; position: absolute; top: 120%; transition: all 0.3s ease 0s; visibility: hidden; width: 250px; z-index: 9; width: 200px; height: 200px; }.open-sub__menu:hover.header-sub__menu { opacity: 1; top: 100%; visibility: visible; }
 <div class="header-menu"> <ul class="header-menu__list"> <li><a href="">Find events</a></li> <li><a href="">Create an event</a></li> <li><a href="">Help</a></li> </ul> </div>

這個“解決方案”根本沒有准備好生產。 但是您能夠發現如何操作 DOM。

HTML

<ul id="nav"></ul>

JavaScript

const navElement = document.querySelector('#nav');

const navigationItems = ['Home', 'About', 'Products', 'Support', 'Contact'];

const createListItem = (label) => {
    const li = document.createElement('li');
    li.innerText = label;
    return li;
};


let i = 0;
for (i; i < 3; i++) {
    navElement.appendChild(createListItem(navigationItems[i]));
}

const ellipsisListItemElement = document.createElement('li');
ellipsisListItemElement.innerText = '...';

const subNav = document.createElement('ul');
ellipsisListItemElement.appendChild(subNav);

for (i; i < navigationItems.length; i++) {
    subNav.appendChild(createListItem(navigationItems[i]));
}

navElement.appendChild(ellipsisListItemElement);

不要使用此代碼。 創建您自己的清潔解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM