javascript - 为什么我不能添加任务并将其呈现到列表中?
问题描述
下面是代码,其中“卡片内容”部分有一个表单来添加类和删除图标以删除任务。
当我尝试添加将值添加到表单的任务并单击提交时。该任务未添加到 DOM。Javascript 和 HTML 代码供参考。
应用程序.js
function change(){
var li = document.createElement("LI");
var inputValue = document.getElementsByClassName("btn").value;
var t = document.createTextNode(inputValue);
li.appendChild(t);
if (inputValue === ''){
alert("Please input a task");
}else{
document.getElementsByClassName("collection").appendChild(li);
}
document.getElementsByClassName("btn").value = "";
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
li.appendChild(span);
for(var k = 0;k < close.length;k++){
close[k].onclick = function(){
var div = this.parentElement;
div.style.display = "none";
}
}
var myNodeList = document.getElementsByTagName("LI");
for(var i = 0;i < myNodeList.length;i++){
var span = document.createElement("SPAN");
var txt = document.createTextNode("\u00D7");
span.className = "close";
span.appendChild(txt);
myNodeList[i].appendChild(span);
}
var close = document.getElementsByClassName("fa fa-remove");
for(var j = 0;j < close.length;j++){
close[j].onclick = function(){
var div = this.parentElement;
div.style.display = "none";
}
}
}
HTML 文件以根据用户输入将任务添加到列表中。indes.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
crossorigin="anonymous">
<title>Task List</title>
<style>
.red{
color:red;
}
.blue{
color:blue;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col s12">
<div id="main" class="card">
<div class="card-content">
<span class="card-title">Task List TEST</span>
<div class="row">
<div class="input-field col s12">
<input type="text" name="task" id="task">
<label for="task">New Task</label>
</div>
</div>
<input type="submit" onclick="change()" value="Add Task" class="btn">
</div>
<div class="card-action">
<h5 id="task-title">Tasks</h5>
<ul class="collection">
<li class="collection-item">
List Item
<a href="#" class="delete-item secondary-content">
<i class="fa fa-remove"></i>
</a>
</li>
<li class="collection-item">
List Item
<a href="#" class="delete-item secondary-content">
<i class="fa fa-remove"></i>
</a>
</li>
<li class="collection-item">
List Item
<a href="#" class="delete-item secondary-content">
<i class="fa fa-remove"></i>
</a>
</li>
<li class="collection-item">
List Item
<a href="#" class="delete-item secondary-content">
<i class="fa fa-remove"></i>
</a>
</li>
<li class="collection-item">
List Item
<a href="#" class="delete-item secondary-content">
<i class="fa fa-remove"></i>
</a>
</li>
</ul>
<a class="clear-tasks btn black" href="">Clear Tasks</a>
<button onclick="change()" class="test">Change</button>
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
<script src="app.js"></script>//The Javascript being used//
</body>
</html>
解决方案
由于您使用的是“getElementsByClassName”函数,因此您需要指定确切的索引位置,请参阅下文
document.getElementsByClassName("collection")[0].appendChild(li);
推荐阅读
- amazon-web-services - 谁能给我一个自定义 CloudWatch 事件模式的示例
- elm - 悬停在榆树(elm-ui)中时如何使文本删除线?
- python - 我如何知道 librosa 进行傅里叶变换的数据中的目标 Hz
- flutter - Flutter:列表已弃用?
- python - 如何匹配 Lark 中的开始和结束标签?
- python - 如何从 pytesseract 获得最佳结果?
- flutter - Flutter (\t) 字符串值对齐问题
- r - 这个 R 函数导出每个形状的面积有什么问题?
- arrays - 数组 - C 中的 DS HackerRank
- ios - 在 TextField 中的空格后自动触发 shift 按钮 - SwiftUI