2016-12-05 3 views
1
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); 
} 

Dies ist mein aktueller Code, an dem ich gerade arbeite. Ich erstelle eine Website mit zwei Eingabefeldern für Vor- und Nachname. Wenn die einzelnen Felder nach der Überprüfung unscharf sind, wird die Schaltfläche zum Senden aktiviert. Wenn Sie auf die Senden-Schaltfläche klicken, werden der Vor- und der Nachname kombiniert und dann die einzelnen Buchstaben getrennt und ein Bild aufgerufen, das sich auf jeden eingegebenen Buchstaben bezieht.removeChild ist keine Funktion

Hier ist, wo ich das Problem bekommen:

Was ich will, ist das Bild anzuzeigen, dann die Bilder entfernen und wieder anzuzeigen kontinuierlich setInterval verwenden. (d. h. der mit den Bildern geschriebene Name blinkt). leider mit meinem Code, wenn ich versuche, die Bilder mit der removeChild Funktion zu entfernen, erhalte ich einen Fehler von:

UPDATE

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.

Im Folgenden wird ein Bild der von dem Inspektionswerkzeug mit dem Fehler und Zeile, die den Fehler erhält.

error image

Warum erhalte ich diesen Fehler, wenn ich es bin zu fragen die Bilder mit removeChild (Anzeige [i]) zu entfernen?

+1

Fehlende ')' im Fragment 'getElementById (" Anzeigename ".removeChild' – Satpal

Antwort

2

Ersetzen Leitung 68 mit

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

Sieht so aus, als habe ich meinen Code korrigiert So eine einfache Korrektur, aber ich konnte es nicht herausfinden Ich denke, ich war zu sehr in Knoten, dass ich diesen einfachen Code vergessen habe. Danke. Jetzt muss ich nur den setInterval Teil meines Codes reparieren, um es auszustellen, so dass es schön ausläuft und den Namen nicht zweimal hin und wieder anzeigt. –

+0

Dies wird alles von '# displayname' während OPs entfernen Code entfernt nur "img" Knoten. Und wenn OP alles entfernen will, gibt es keine Notwendigkeit für die "for" -Schleife in Zeile 67. – Dogbert

1

Ändern der Code auf der Leitung 68 von diesem

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

dieser

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

Aktualisiert mit neuem Fehler. Entschuldigung. Ich habe versucht, meinen Code während des Schreibens dieses Beitrags zu reparieren und ich vermute, dass ich einen kleinen Syntaxfehler gemacht habe Aktueller Fehler, dass ich bekomme, dass ich festgeklebt bin –

0

removeChild() ist ein Verfahren, anwendbar auf einen Knoten (und keine Zeichenfolge oder ein Selektor, wie Sie in Ihrem Code verwendet haben).

document.getElementById("displayname").removeChild(display[i])); sollte die entsprechende Syntax sein.

+0

Aktualisiert mit neuem Fehler achtern Dieser kleine Syntaxfehler. Das tut mir leid. Dies ist der eigentliche Fehler, den ich untersucht habe. Bei der Fehlerbehebung habe ich einen Fehler gemacht und einen Syntaxfehler bekommen. –