如何删除附加元素?

How can i remove an appended element?

我正在做 javascriptissexy.com 的练习,该练习是构建一个测验器。我试图根据变量页面值显示一个问题,问题存储在数组对象中,当单击下一个按钮时,页面变量递增 1,下一个问题及其选择显示。

我想做的是在单击下一个按钮后,删除之前附加的问题及其选项。我该怎么做?

function createQuiz(crPage) {
    textNode = Allquestions[indexController].question;
    switch (crPage) {
        case 0:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 1:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 2:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 3:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 4:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 5:
            $("legend").append(textNode);
            appendChoices()
            break;
        case 6:
            $("legend").append(textNode);
            appendChoices()
            break;

        default:
            // code

    }
}


function appendChoices() {
    for (var i = 0; i < Allquestions[indexController].choices.length; i++) {
            console.log(Allquestions[indexController].choices[i]);
    }
}

不确定您是否使用 jQuery 但是;使用 jQuery empty() 函数,您可以轻松删除之前添加的问题,例如:

$('legend').empty();

您可以在此处找到更多信息:jQuery API empty() function

嗯,不用每次都使用 .append(),您可以使用 .replaceWith() 而不是 $("legend").children()

例如,每种情况下的代码如下所示:

$("legend").children().replaceWith(textNode);
appendChoices()
break;

它将在每种情况下替换 $("legend") 内容。

编辑:

或者最好的方法是使用 .html() 方法,如下所示:

$("legend").html(textNode);
appendChoices()
break;

注:

我看到你在每种情况下都在做同样的事情,通过使用相同的语句,switch 块的目的是什么?