如何将来自输入的值和使用 JS 创建的元素添加到列表中?
How to add a value from input and a created element with JS to the list?
我正在 JavaScript ES5 中构建一个列表,它说 'node' 某些东西不能是这个或那个。
好吧,这是我第一次真正的冒险。但我不确定如何解决这个问题,也不确定控制台中的 'node' 是怎么回事。我尝试了 node.appendChild、appendNode 等...几乎所有我能想到的东西。
这是代码的 CodePen:https://codepen.io/Aurelian/pen/ypKxwL?editors=1010
JS:
window.onload = function() {
///////////////////
//Variables
///////////////////
// Variables
var newTaskInput = document.querySelector('#new-task');
var addTaskButton = document.querySelector('#add-task');
var incompleteTasks = document.querySelector('#incomplete-tasks');
//var completeTasks = document.querySelector('#complete-tasks');
function createNewTaskElement(userValue) {
var listItem = document.createElement('li');
var label = document.createElement('label');
var editInput = document.createElement('input');
var editButton = document.createElement('button');
var deleteButton = document.createElement('button');
label.innerHTML = userValue;
editInput.type = "text";
editButton.className = "edit";
deleteButton.className = "delete";
// Insert that to the li
listItem.appendChild(label);
listItem.appendChild(editInput);
listItem.appendChild(editButton);
listItem.appendChild(deleteButton);
return listItem;;
}
// Function
function addNewTask() {
incompleteTasks.push(createNewTaskElement);
}
//function deleteTask () {
// this.pop;
//}
//Events
addTaskButton.addEventListener('click', addNewTask);
}
HTML:
<div class="container">
<div class="">
<label for="new-task">Add Item</label>
<input id="new-task" type="text">
<button id="add-task">Add</button>
</div>
<div>
<h3>Todo List</h3>
<ul id="incomplete-tasks">
<li>
<label>Pay Bills</label>
<input type="text">
<button class="edit">Edit</button>
<button class="delete">Delete</button>
</li>
</ul>
</div>
</div>
您没有将 createNewTaskElement
作为函数调用,并且 incompleteTasks
不是一个数组,它是一个 DOM 对象,因此没有可用的 push
方法。
incompleteTasks.push(createNewTaskElement);
应该是
incompleteTasks.appendChild(createNewTaskElement());
找到 here in codepen 更新后的代码。
我正在 JavaScript ES5 中构建一个列表,它说 'node' 某些东西不能是这个或那个。
好吧,这是我第一次真正的冒险。但我不确定如何解决这个问题,也不确定控制台中的 'node' 是怎么回事。我尝试了 node.appendChild、appendNode 等...几乎所有我能想到的东西。
这是代码的 CodePen:https://codepen.io/Aurelian/pen/ypKxwL?editors=1010
JS:
window.onload = function() {
///////////////////
//Variables
///////////////////
// Variables
var newTaskInput = document.querySelector('#new-task');
var addTaskButton = document.querySelector('#add-task');
var incompleteTasks = document.querySelector('#incomplete-tasks');
//var completeTasks = document.querySelector('#complete-tasks');
function createNewTaskElement(userValue) {
var listItem = document.createElement('li');
var label = document.createElement('label');
var editInput = document.createElement('input');
var editButton = document.createElement('button');
var deleteButton = document.createElement('button');
label.innerHTML = userValue;
editInput.type = "text";
editButton.className = "edit";
deleteButton.className = "delete";
// Insert that to the li
listItem.appendChild(label);
listItem.appendChild(editInput);
listItem.appendChild(editButton);
listItem.appendChild(deleteButton);
return listItem;;
}
// Function
function addNewTask() {
incompleteTasks.push(createNewTaskElement);
}
//function deleteTask () {
// this.pop;
//}
//Events
addTaskButton.addEventListener('click', addNewTask);
}
HTML:
<div class="container">
<div class="">
<label for="new-task">Add Item</label>
<input id="new-task" type="text">
<button id="add-task">Add</button>
</div>
<div>
<h3>Todo List</h3>
<ul id="incomplete-tasks">
<li>
<label>Pay Bills</label>
<input type="text">
<button class="edit">Edit</button>
<button class="delete">Delete</button>
</li>
</ul>
</div>
</div>
您没有将 createNewTaskElement
作为函数调用,并且 incompleteTasks
不是一个数组,它是一个 DOM 对象,因此没有可用的 push
方法。
incompleteTasks.push(createNewTaskElement);
应该是
incompleteTasks.appendChild(createNewTaskElement());
找到 here in codepen 更新后的代码。