JavaScript/HTML 中的待办事项列表
Posted
技术标签:
【中文标题】JavaScript/HTML 中的待办事项列表【英文标题】:To Do List in JavaScript/HTML 【发布时间】:2014-12-23 19:54:49 【问题描述】:我已经设置了这个待办事项列表,几乎所有的工作都很完美。但是,如果我删除列表中的所有内容。它不会让我添加新条目,我似乎无法弄清楚为什么。只要我在列表中至少有一个条目,它就可以正常工作。
非常感谢您的帮助。
< head >
< script type = "text/javascript" >
/*<![CDATA[*/
function addTask()
if (document.forms[0].newtask.value == "")
window.alert("You must enter a value in the New Task field.");
else
if (document.forms[0].tasks.options[0].value == "tasks")
document.forms[0].tasks.options[0] = null;
var newTask = new Option();
newTask.value = document.forms[0].newtask.value;
newTask.text = document.forms[0].newtask.value;
var numTasks = document.forms[0].tasks.options.length;
document.forms[0].tasks.options[numTasks] = newTask;
document.forms[0].newtask.value = "";
function deleteTask()
var selectedTask = 0;
var taskSelected = false;
while (selectedTask < document.forms[0].tasks.length)
if (document.forms[0].tasks.options[selectedTask].selected == true)
taskSelected = true;
break;
++selectedTask;
if (taskSelected == true)
document.forms[0].tasks.options[selectedTask] = null;
else
window.alert("You must select a task in the list.");
function ascendingSort()
var newTasks = new Array();
for (var i = 0; i < document.forms[0].tasks.length; ++i)
newTasks[i] = document.forms[0].tasks.options[i].value;
newTasks.sort();
for (var j = 0; j < document.forms[0].tasks.length; ++j)
document.forms[0].tasks.options[j].value = newTasks[j];
document.forms[0].tasks.options[j].text = newTasks[j];
/*]]>*/
< /script>
<title>To Do List</title >
< /head>
<body>
<h1>To Do List</h1>
<form action="">
<p>New Task
<input type="text" size="68" name="newtask" />
</p>
<p>
<input type="button" value="Add Task" onclick="addTask()" style="width: 150px" />
<input type="button" value="Delete Selected Task" onclick="deleteTask()" style="width: 150px" />
<br />
<input type="button" value="Ascending Sort" onclick="ascendingSort()" style="width: 150px" />
</p>
<p>
<select name="tasks" size="10" style="width: 500px">
<option value="tasks">Tasks</option>
</select>
</p>
</form>
</body>
【问题讨论】:
【参考方案1】:当您删除所有任务时,您的select
为空,没有options
。
您需要在 addTask
函数中使用
document.forms[0].tasks.options.length > 0
类似这样的:
if (document.forms[0].tasks.options.length > 0 && document.forms[0].tasks.options[0].value == "tasks")
document.forms[0].tasks.options[0] = null;
见code updated
【讨论】:
【参考方案2】:当所有任务都被删除时,然后
document.forms[0].tasks.options[0].value //throw an error as
document.forms[0].tasks.options[0] //is undefiend
所以我一直作为
if (typeof document.forms[0].tasks.options[0] != 'undefined' && document.forms[0].tasks.options[0].value == "tasks")
document.forms[0].tasks.options[0] = null;
【讨论】:
【参考方案3】:您的代码在此处崩溃,您可以在浏览器的 jsconsole 中看到
if (document.forms[0].tasks.options[0].value == "tasks")
在将 options[0] 设置为 null 后,您尝试读取 options[0].value
document.forms[0].tasks.options[selectedTask] = null;
删除项目时尽量不要破坏你的数据结构
【讨论】:
以上是关于JavaScript/HTML 中的待办事项列表的主要内容,如果未能解决你的问题,请参考以下文章