While循环与HTML列表

3
程序应该保持循环,直到用户输入“quit”退出待办事项列表。它可以工作,但只能运行一次,因为它没有像应该的那样循环。我需要它将输入显示为列表,直到输入“quit”。

无法弄清楚原因
// global variables
var output;

function buildList(input) {
    "use strict";

    // declare variables
    var unorderedList;
    var inputList;

    unorderedList = document.getElementById("toDo");

    inputList = "<li>" + input + "</li>";

    unorderedList.innerHTML = inputList;
}


function displayList() {
    "use strict";

    // PART 1: YOUR CODE STARTS AFTER THIS LINE
    // declare constants
    const QUIT_CODE = "quit";

    // declare variables
    var output;
    var input;

    while (input !== QUIT_CODE) {
        input = prompt("Enter a to-do item or \"quit\" to stop: ");
        output = document.getElementById("outputPart1");
        buildList(input);
        output.innerHTML += inputList;
        if (input === QUIT_CODE) {
        break;
        }
    }

    // end of code
}

请您能否详细解释一下您的代码,并发送包含JS的HTML代码。 - user10249871
请随意在问题中发布HTML代码,这样任何人都可以尝试您的代码并更好地诊断问题,而不是猜测! - Prashant Pimpale
1
变量 inputList 在上下文中未定义:output.innerHTML += inputList;,因为它在其他地方被定义。 - Ahmad
// 全局变量你几乎不需要(或想要)。肯定不在这个代码中。 - Thomas
我回去了,因为我认为全局变量没有用处,所以把它们都删掉了。我发现inputList未定义。我仍在努力使用这个网站,并学习如何添加正确的HTML部分和JS。 - M.P.T.
1个回答

2
我稍微简化了一下,现在它可以正常工作:
function buildList(input) {
    "use strict";

    var inputList;

    inputList = "<li>" + input + "</li>";
    document.getElementById("toDo").innerHTML += inputList;
}


function displayList() {
    "use strict";

    const QUIT_CODE = "quit";

    var input;

    while (input !== QUIT_CODE) {
        input = prompt("Enter a to-do item or \"quit\" to stop: ");
        if(input !== QUIT_CODE)
            buildList(input);
   }
}

为什么在while循环中需要if语句?它不应该只是使用while循环构建列表并提示输入,直到输入“退出”为止吗?抱歉,我还在学习。 - M.P.T.
这是必需的,因为在此代码片段中,输入是在 while 循环内填充的,所以在获取“quit”命令之前无法进行评估。 - user9765720

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接