Sprecher 1: Jetzt in diesem letzten Beispiel erinnern, dass wir einige setzt JavaScript-Code innerhalb meiner HTML, Insbesondere innerhalb des Wertes Auf das Attribut namens Senden für das Formular-Tag. Jetzt für kleine Seiten, diese ist nicht so eine große Sache. Aber wie eine Web-Seite bekommt mehr und mehr komplex, einfach indem Sie Ihren JavaScript-Code hier und da im Inneren der Wert der Attribute nicht der beste Design. Am besten, wenn wir den Faktor, dass Sie und zumindest legte es in der die Script-Tag zentral. Wie das geht? Nun kommen wir zu meiner Form-Tag zurückkehren und zuerst dieses Attribut und seinen löschen Wert insgesamt. Dann ist hier oben, anstatt definieren ein Funktion namens Greet, lassen Sie uns hängen auf die Codezeile, die wir letztlich wird immer noch für die Ausführung und ersetzen Greet der Funktion wie folgt. Document.get Element von ID zitieren unquote demo - wo Demo, Rückruf, ist die einzigartige Kennung für die Form selbst - Punkt auf einreichen, die daran erinnern, der Name ist der Event-Handler, in dem wir interessiert sind. Und lassen Sie uns zuweisen, dass anschließend auf Handler der Wert, der eigentlich ein funktionieren sich. Jetzt bemerken, dass ich nicht wirklich fordern hier eine Funktion. Ich bin stattdessen definieren eine anonyme, anders als Lambda-Funktion bekannt ist, indem Sie zwischen diesen geschweiften Klammern ein Haufen von Code, der sollte tatsächlich ausgeführt werden. Genauer gesagt, der Code, die ich gerne ausgeführt ist, dass Zeile, die ich hatte vor, und dann ist hinzuzufügen, dass wir false zurück, so dass diese Form nicht letztlich vorgelegt Remote-Web-Ende Server in der traditionellen Art und Weise. Retten wir nun diese Datei, öffnen Sie es in einem Browser, und sehen, was passiert. http://localhost/dom-1.html. Lassen Sie uns jetzt geben in meinem Namen, David, Senden. Und nichts scheint zu geschehen, außer die URL meiner Seite scheint haben sich geändert, als ob die Form war tatsächlich auf die gleiche Datei geschrieben. Nun, warum könnte das sein? Nun, ich brauche weitere Informationen. Also lassen Sie uns gehen Sie vor und öffnen Chrome Entwickler-Tools, so dass ich eigentlich Blick auf das Konsolenfenster zu sehen wenn ich etwas falsch gemacht habe. I über zuzugreifen, dass ein paar Möglichkeiten. Eines davon ist über dieses Menü hier, dann unter Extras, dann auf Entwickler-Tools. Und hier in der Registerkarte Console bemerken, es gibt eine nicht abgefangene Fehlertyp, kann nicht gesetzt Immobilie auf null einreichen. Nun, warum könnte das sein? Nun wieder in meinem Quellcode hier, Kündigung dass auf absenden ich denke, ist ein Eigenschaft des Elements, dessen eindeutige Kennung Demo. Ein Element ist wiederum nur ein Knoten in einem Baum. So scheint es, dass mein Browser nicht denken, dass das Element oder noch Knoten vorhanden ist. Und in der Tat, ist es nicht. Daran erinnern, dass eine Web-Seite analysiert wird oder lesen durch einen Web-Browser von oben nach unten, von links nach rechts. Und so, wenn der JavaScript-Code ist auftreten, in der Regel, es ist ausgeführt sofort. Aber in diesem Fall haben wir noch nicht gekommen noch zu dem Teil der dom, die HTML, in dem diese Form mit einer einzigartigen Kennung Demo erklärt wurde. Und so versuchen wir, die Ausführung meiner JavaScript-Code vor diesem Knoten selbst besteht in der Struktur, die natürlich ist problematisch, weil dann sicher, das Element selbst ist null zu diesem Zeitpunkt. So wie sie zu beheben? Nun, wir haben ein paar Lösungen. Aber lassen Sie uns versuchen, die einfachste durch die Verlagerung mein Skript-Tag aus dem Kopf markieren, um meinen Körper, aber insbesondere in Richtung der Boden der Körper meiner Seite ist so dass es unter den Knoten und Fragen. Genauer gesagt, wollen wir hervorheben und schneiden der offene Tag und in der Nähe Tag für Skript und zu verlagern, dass die gesamte Codeblock zum Ende der Datei hier. Nun ist dies nicht unbedingt der sauberste Design, aber zumindest wird es durchzusetzen, die richtige Reihenfolge der Operationen. Lassen Sie die Datei speichern und laden in meinem Browser. Lassen Sie die Seite neu laden, neu eingegeben meinem Namen, und es ist Hallo David zurück.