Это способ сделать это без необходимости использовать JavaScript просто html и CSS для создания раскрывающегося списка и использовать JavaScript для обработки события изменения имени
Один важный Следует отметить, что при установке нового имени с помощью
title.innerHTML = name ;
он уничтожает исходный список и переопределяет его, поэтому после этого оператора мы должны добавить список обратно с помощью
title.appendChild(list)
Здесь это рабочий код ...
var title = document.getElementById('title');
var list = document.getElementById('list');
let c1 = document.getElementById('c1');
let c2 = document.getElementById('c2');
let c3 = document.getElementById('c3');
var namec1 = c1.innerHTML;
var namec2 = c2.innerHTML;
var namec3 = c3.innerHTML;
//console.log(name)
c1.addEventListener("click", function(e){
renameTitle(namec1)
// Add more event stuff here
});
c2.addEventListener("click", function(e){
renameTitle(namec2)
// Add more event stuff here
});
c3.addEventListener("click", function(e){
renameTitle(namec3)
// Add more event stuff here
});
function renameTitle(name)
{
var title = document.getElementById('title');
title.innerHTML = name ;
title.appendChild(list)
}
a {
text-decoration: none;
}
nav {
font-family: monospace;
}
ul {
background: darkorange;
list-style: none;
margin: 0;
padding-left: 0;
}
li {
color: #fff;
background: darkorange;
display: block;
float: left;
padding: 1rem;
position: relative;
text-decoration: none;
transition-duration: 0.5s;
}
li a {
color: #fff;
}
li:hover,
li:focus-within {
background: red;
cursor: pointer;
}
li:focus-within a {
outline: none;
}
ul li ul {
background: orange;
visibility: hidden;
opacity: 0;
min-width: 5rem;
position: absolute;
transition: all 0.5s ease;
margin-top: 1rem;
left: 0;
display: none;
}
ul li:hover > ul,
ul li:focus-within > ul,
ul li ul:hover,
ul li ul:focus {
visibility: visible;
opacity: 1;
display: block
}
ul li ul li {
clear: both;
width: 100%;
}
<nav role="navigation">
<ul>
<li id='title'> Categories
<ul class="dropdown" id='list'>
<li id='c1'>Sub-1</li>
<li id='c2'>Sub-2</li>
<li id='c3'>Sub-3</li>
</ul>
</li>
</ul>
</nav>
Ан и часть ваших комментариев, чтобы создать элемент категории и добавить его в список добавить
var newItem = document.createElement('li');
newItem .innerHTML = 'catogories';
var list = document.getElementById("list"); // Get the <ul> element to insert a new node
list.insertBefore(newItem, list.childNodes[0]); // Insert <li> before the first child of <ul>
<nav role="navigation">
<ul>
<li id='title'> Categories
<ul class="dropdown" id='list'>
<li id='c1'>Sub-1</li>
<li id='c2'>Sub-2</li>
<li id='c3'>Sub-3</li>
</ul>
</li>
</ul>
</nav>