JavaScript Pop / Shift问题

时间:2016-02-06 00:58:01

标签: javascript arrays push shift pop

基本上当用户在"添加任务"中输入内容时字段并按下添加任务按钮,输入的内容显示在任务列表中,当用户单击"显示下一个任务"时,应该在任务列表数组中输入最后一个内容,并将其显示在"下一个任务"文本框。

我的代码:

var taskList = [];
var $ = function (id) { return document.getElementById(id); }

var addTask = function()
{
    var newTask = $("new_task").value;
    taskList.push(newTask);
    display();
}
var display = function()
{
    var outString = "";
    document.getElementById("new_task").value = "";
    for (var i in taskList)
    {
        outString += taskList[i] + "\n";
    }   
    $("task_list").value = outString;
}
var finalTask = function()
{
    document.getElementById("new_task").value = "";
    document.getElementById("next_task").value = taskList;
    var nextTask = $("task_list").value;
    taskList.shift(nextTask);
    display();

    if (nextTask == "")
    {
        alert("No tasks remaining");
    }
}
window.onload = function()
{
    $("add_task").onclick = addTask;
    $("show_next_task").onclick = finalTask;
}

1 个答案:

答案 0 :(得分:0)

看起来你只是用错误的名字调用方法。你有:

window.onload = function ()
{
    $("add_task").onclick = addTask;
    $("show_next_task").onclick = nextTask;  // <-------------
}

但是你将你的函数命名为nextTasks

修改

您的nextTasks方法也出现错误:

var nextTasks = function()
{
    var nextTask = $("next_task").value;
    taskList.shift(nextTasks);  // <----------------
    display();
}

在箭头处,您似乎将该函数作为参数传递,您可能想要传递var nextTask

通过提供更易于区分的变量和函数名称,您可以节省很多麻烦。这可能看起来很乏味,但这种错误很常见。