有一个带有名称的数组,您需要使用该数组的元素创建一个列表,这就完成了。
最终结果:在列表的末尾有一个输入,您可以通过它添加新元素;所有元素(包括新元素)都可以通过单击随附元素旁边的链接进行编辑和删除(删除)。尚未完成,这不是问题)
问题:如何缩短两块代码(现有的li和添加的),以免多次重写函数,无法将它们连接起来,如果可以以某种方式将函数移到for之外,请告诉我。另外,当添加删除链接时,该链接仅添加到现有的 li 中,而忽略添加的链接。
let parent = document.querySelector('ul');
let add = document.getElementById('input');
let array = ['Nani', 'Tom', 'Itan', 'Lilo'];
for (let elem of array) {
let li = document.createElement('li');
li.textContent = elem;
parent.append(li)
li.addEventListener('click', func);
function func() {
let input = document.createElement('input');
input.value = li.textContent;
li.textContent = '';
li.append(input);
input.addEventListener('blur', function() {
li.textContent = input.value;
li.addEventListener('click', func)
})
li.removeEventListener('click', func)
}
}
add.addEventListener('blur', function() {
let li = document.createElement('li');
li.textContent = add.value;
parent.append(li)
li.addEventListener('click', func);
function func() {
let input = document.createElement('input');
input.value = li.textContent;
li.textContent = '';
li.append(input);
input.addEventListener('blur', function() {
li.textContent = input.value;
li.addEventListener('click', func)
})
li.removeEventListener('click', func)
}
})
let lis = document.querySelectorAll('ul li')
for (let li of lis) {
let link = document.createElement('a');
link.href = '';
link.textContent = 'delite';
li.append(link)
}
<ul id="parent"></ul>
<input id="input">