removeChild не является функцией

window.onload = initPage;
var firstname = false;
var lastname = false;

function initPage() {
    addEventHandler(document.getElementById("firstname"), "blur", verifyFirst);
    addEventHandler(document.getElementById("lastname"), "blur", verifyLast);
    addEventHandler(document.getElementById("submit"), "click", showName);
}

function verifyFirst(e) {
    var me = getActivatedObject(e);
    if (me.value === "") {
        me.className = "error";
        me.focus();
        me.select();
        return;
    }
    else {
        me.className = "";
        firstname = true;
        enabledButton();
    }
}

function verifyLast(e) {
    var me = getActivatedObject(e);
    if (me.value === "") {
        me.className = "error";
        me.focus();
        me.select();
        return;
    }
    else {
        me.className = "";
        lastname = true;
        enabledButton();
    }
}

function enabledButton() {
    if (firstname && lastname) {
        document.getElementById("submit").disabled = false;
    }
    else {
        document.getElementById("submit").disabled = true;
    }
}

function showName() {
    var first = document.getElementById("firstname").value;
    var last = document.getElementById("lastname").value;
    var word = first.toLowerCase() + last.toLowerCase();
    for (var i = 0; i < word.length; i++) {
        var letter = word.charAt(i);
        var img = document.createElement("img");
        img.setAttribute("src", "images/" + letter + ".png");
        img.setAttribute("style", "left:" + 50 * i);
        document.getElementById("displayname").appendChild(img);
    }
    var t = setInterval(removeName, 2000);
}

function removeName() {
    var display = document.getElementById("displayname").getElementsByTagName("img");
    var lengthOfDisplay = display.length;
    for (var i = 0; i < lengthOfDisplay; i++) {
        document.getElementById("displayname").removeChild(display[i]);
    }
    var t = setInterval(showName, 2000);
}

Это мой текущий код, над которым я работаю. Я создаю сайт с двумя полями ввода для имени и фамилии. При размытии каждого поля после проверки они активируют кнопку отправки. Когда нажата кнопка отправки, она объединит имя и фамилию, а затем разделит каждую букву и вызовет изображение, которое будет относиться к каждой введенной букве, и отобразит его в отображаемом элементе div.

Вот где я получаю проблему:

То, что я хочу, это отобразить изображение, затем удалить изображения и отображать их снова непрерывно, используя setInterval. (т.е. имя, записанное с изображениями, будет мигать). к сожалению, с моим кодом, когда я пытаюсь удалить изображения с помощью функции removeChild, я получаю сообщение об ошибке:

ОБНОВИТЬ

Uncaught TypeError: Не удалось выполнить "removeChild" на "Node": параметр 1 не относится к типу "Node".

Ниже приведено изображение контрольного инструмента с ошибкой и линией, которая получает ошибку.

изображение ошибки

Почему я получаю эту ошибку, когда прошу удалить изображения с помощью removeChild(display[i])?

3 ответа

Решение

Заменить строку 68 на

document.getElementById("displayname").innerHTML = '';

Измените код в строке 68 с этого

document.getElementById("displayname".removeChild(display[i]));

к этому

document.getElementById("displayname").removeChild(display[i]);

removeChild() это метод, применимый к узлу (а не строка или селектор, как вы использовали в своем коде).

document.getElementById("displayname").removeChild(display[i])); должен быть соответствующий синтаксис.

Другие вопросы по тегам