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]));
должен быть соответствующий синтаксис.