Felix Riesterer: html Formular-Werte zusammenfügen

Beitrag lesen

Lieber JürgenB,

fast:

function abc () 
{
	var a = document.getElementById("vorname").value+" "+document.getElementById("nachname").value;
	document.getElementById("name").value = a;
} 
document.getElementById("go").onclick = abc;

Die Aktion soll ja sofort ausgeführt werden, daher muss das window.onload weg. Außerdem ist es zu diesem Zeitpunkt für ein window.onload zu spät.

ist es nicht so, dass das document.getElementById("go").onclick = abc; bereits ausgeführt wird, wenn das Dokument noch nicht fertig geladen hat und damit die Funktionalität nicht bereitgestellt werden kann? Steht der Code in einem <script>, welches erst nach dem Formular steht, dann wäre das kein Problem.

Mein Vorschlag wäre, alles in eine Funktion zu packen, die mit addEventListener und DOMDocumentLoaded) eingebettet ist:

document.addEventListener("DOMContentLoaded", function () {
    var vor = document.getElementById("vorname"),
        nach = document.getElementById("nachname"),
        ganz = document.getElementById("name");

    function kombiniere () {
        // vor, nach und ganz sind als Variablen hier bekannt (Closure)
        ganz.value = vor.value + " " + nach.value;
    }

    // Seid ihr alle da? Bei geänderten Werten zaubern:
    if (vor && nach && ganz) {
        vor.addEventListener("change", kombiniere);
        nach.addEventListener("change", kombiniere);
    }
});

Ich finde, man sollte das Ergebnis von getElementById immer prüfen, anstatt sich blind darauf zu verlassen, dass das Element so auch existiert.

Liebe Grüße,

Felix Riesterer.