Я пытаюсь создать приложение со списком дел в JavaScript с помощью массива, метода push, метода removeChild и функции keydown. Я хочу, чтобы пользователь мог использовать и кнопку добавления, и клавишу ввода для ввода ввода. Мне удалось создать приложение, которое в конечном итоге имеет 2 функции с 2 одинаковыми наборами переменных и методами DOM: одно для кнопки добавления, а другое для функции нажатия клавиш (когда пользователь нажимает клавишу ввода после добавления ввода). Эта настройка, кажется, работает нормально. Тем не менее, я хотел бы знать, возможно ли создать ОДНУ функцию, которая облегчает как кнопку Add, так и функцию keydown с одним набором методов DOM. Если да, может кто-нибудь представить потенциальную демоверсию? Спасибо!
(Следующая демонстрация содержит классы Bootstrap)
JS:
var array = [];
function add() {
var task = document.getElementById("task").value;
array.push(task);
var text = document.createTextNode(task);
var li = document.createElement("li");
var btn = document.createElement("button");
btn.appendChild(document.createTextNode("x"));
btn.setAttribute("onclick", "remove()");
btn.setAttribute("class", "btn-primary btn-sm newBtn");
li.appendChild(text);
li.appendChild(btn);
document.getElementById("myUl").appendChild(li);
}
function remove() {
var task = this.event.currentTarget.parentNode;
document.getElementById("myUl").removeChild(task);
}
document.getElementById("task").addEventListener("keydown", function(event) {
if (event.which == 13) {
var task2 = document.getElementById("task").value;
array.push(task2);
var text2 = document.createTextNode(task2);
var li2 = document.createElement("li");
var btn2 = document.createElement("button");
btn2.appendChild(document.createTextNode("x"));
btn2.setAttribute("onclick", "remove()");
btn2.setAttribute("class", "btn-primary btn-sm newBtn");
li2.appendChild(text2);
li2.appendChild(btn2);
document.getElementById("myUl").appendChild(li2);
}
});
HTML:
<div class="mainDiv">
<input id="task" class="input-lg">
<button id="inputBtn" class="btn-primary btn-lg" onclick="add()">add</button>
</div>
<ul id="myUl"></ul>