1 00:00:00,000 --> 00:00:00,380 2 00:00:00,380 --> 00:00:03,000 >> Sprecher 1: Jetzt in diesem letzten Beispiel erinnern, dass wir einige setzt 3 00:00:03,000 --> 00:00:07,170 JavaScript-Code innerhalb meiner HTML, Insbesondere innerhalb des Wertes 4 00:00:07,170 --> 00:00:10,460 Auf das Attribut namens Senden für das Formular-Tag. 5 00:00:10,460 --> 00:00:12,850 Jetzt für kleine Seiten, diese ist nicht so eine große Sache. 6 00:00:12,850 --> 00:00:15,950 Aber wie eine Web-Seite bekommt mehr und mehr komplex, einfach indem Sie Ihren 7 00:00:15,950 --> 00:00:19,660 JavaScript-Code hier und da im Inneren der Wert der Attribute nicht der 8 00:00:19,660 --> 00:00:20,830 beste Design. 9 00:00:20,830 --> 00:00:23,440 Am besten, wenn wir den Faktor, dass Sie und zumindest legte es in der 10 00:00:23,440 --> 00:00:25,200 die Script-Tag zentral. 11 00:00:25,200 --> 00:00:26,080 >> Wie das geht? 12 00:00:26,080 --> 00:00:30,040 Nun kommen wir zu meiner Form-Tag zurückkehren und zuerst dieses Attribut und seinen löschen 13 00:00:30,040 --> 00:00:31,780 Wert insgesamt. 14 00:00:31,780 --> 00:00:35,730 Dann ist hier oben, anstatt definieren ein Funktion namens Greet, lassen Sie uns hängen 15 00:00:35,730 --> 00:00:39,405 auf die Codezeile, die wir letztlich wird immer noch für die Ausführung und ersetzen 16 00:00:39,405 --> 00:00:41,560 Greet der Funktion wie folgt. 17 00:00:41,560 --> 00:00:48,190 Document.get Element von ID zitieren unquote demo - 18 00:00:48,190 --> 00:00:52,410 wo Demo, Rückruf, ist die einzigartige Kennung für die Form selbst - 19 00:00:52,410 --> 00:00:56,600 Punkt auf einreichen, die daran erinnern, der Name ist der Event-Handler, in dem 20 00:00:56,600 --> 00:00:57,710 wir interessiert sind. 21 00:00:57,710 --> 00:01:01,990 Und lassen Sie uns zuweisen, dass anschließend auf Handler der Wert, der eigentlich ein 22 00:01:01,990 --> 00:01:03,740 funktionieren sich. 23 00:01:03,740 --> 00:01:06,390 >> Jetzt bemerken, dass ich nicht wirklich fordern hier eine Funktion. 24 00:01:06,390 --> 00:01:10,650 Ich bin stattdessen definieren eine anonyme, anders als Lambda-Funktion bekannt ist, 25 00:01:10,650 --> 00:01:14,100 indem Sie zwischen diesen geschweiften Klammern ein Haufen von Code, der sollte 26 00:01:14,100 --> 00:01:15,490 tatsächlich ausgeführt werden. 27 00:01:15,490 --> 00:01:18,500 Genauer gesagt, der Code, die ich gerne ausgeführt ist, dass Zeile, die ich hatte 28 00:01:18,500 --> 00:01:23,370 vor, und dann ist hinzuzufügen, dass wir false zurück, so dass diese Form nicht 29 00:01:23,370 --> 00:01:26,950 letztlich vorgelegt Remote-Web-Ende Server in der traditionellen Art und Weise. 30 00:01:26,950 --> 00:01:30,345 >> Retten wir nun diese Datei, öffnen Sie es in einem Browser, und sehen, was passiert. 31 00:01:30,345 --> 00:01:33,050 32 00:01:33,050 --> 00:01:39,800 http://localhost/dom-1.html. 33 00:01:39,800 --> 00:01:43,060 Lassen Sie uns jetzt geben in meinem Namen, David, Senden. 34 00:01:43,060 --> 00:01:46,900 Und nichts scheint zu geschehen, außer die URL meiner Seite scheint 35 00:01:46,900 --> 00:01:52,580 haben sich geändert, als ob die Form war tatsächlich auf die gleiche Datei geschrieben. 36 00:01:52,580 --> 00:01:53,870 >> Nun, warum könnte das sein? 37 00:01:53,870 --> 00:01:55,340 Nun, ich brauche weitere Informationen. 38 00:01:55,340 --> 00:01:58,700 Also lassen Sie uns gehen Sie vor und öffnen Chrome Entwickler-Tools, so dass ich eigentlich 39 00:01:58,700 --> 00:02:01,440 Blick auf das Konsolenfenster zu sehen wenn ich etwas falsch gemacht habe. 40 00:02:01,440 --> 00:02:03,330 I über zuzugreifen, dass ein paar Möglichkeiten. 41 00:02:03,330 --> 00:02:07,250 Eines davon ist über dieses Menü hier, dann unter Extras, dann auf 42 00:02:07,250 --> 00:02:08,509 Entwickler-Tools. 43 00:02:08,509 --> 00:02:12,890 >> Und hier in der Registerkarte Console bemerken, es gibt eine nicht abgefangene Fehlertyp, kann nicht 44 00:02:12,890 --> 00:02:15,390 gesetzt Immobilie auf null einreichen. 45 00:02:15,390 --> 00:02:16,900 Nun, warum könnte das sein? 46 00:02:16,900 --> 00:02:21,380 Nun wieder in meinem Quellcode hier, Kündigung dass auf absenden ich denke, ist ein 47 00:02:21,380 --> 00:02:25,360 Eigenschaft des Elements, dessen eindeutige Kennung Demo. 48 00:02:25,360 --> 00:02:27,810 Ein Element ist wiederum nur ein Knoten in einem Baum. 49 00:02:27,810 --> 00:02:30,870 >> So scheint es, dass mein Browser nicht denken, dass das Element 50 00:02:30,870 --> 00:02:32,500 oder noch Knoten vorhanden ist. 51 00:02:32,500 --> 00:02:33,790 Und in der Tat, ist es nicht. 52 00:02:33,790 --> 00:02:37,690 Daran erinnern, dass eine Web-Seite analysiert wird oder lesen durch einen Web-Browser von oben nach unten, 53 00:02:37,690 --> 00:02:38,430 von links nach rechts. 54 00:02:38,430 --> 00:02:41,810 Und so, wenn der JavaScript-Code ist auftreten, in der Regel, es ist ausgeführt 55 00:02:41,810 --> 00:02:42,700 sofort. 56 00:02:42,700 --> 00:02:46,460 >> Aber in diesem Fall haben wir noch nicht gekommen noch zu dem Teil der dom, die 57 00:02:46,460 --> 00:02:51,100 HTML, in dem diese Form mit einer einzigartigen Kennung Demo erklärt wurde. 58 00:02:51,100 --> 00:02:54,320 Und so versuchen wir, die Ausführung meiner JavaScript-Code vor diesem Knoten selbst 59 00:02:54,320 --> 00:02:58,530 besteht in der Struktur, die natürlich ist problematisch, weil dann sicher, 60 00:02:58,530 --> 00:03:01,390 das Element selbst ist null zu diesem Zeitpunkt. 61 00:03:01,390 --> 00:03:02,390 >> So wie sie zu beheben? 62 00:03:02,390 --> 00:03:03,810 Nun, wir haben ein paar Lösungen. 63 00:03:03,810 --> 00:03:07,200 Aber lassen Sie uns versuchen, die einfachste durch die Verlagerung mein Skript-Tag aus dem Kopf 64 00:03:07,200 --> 00:03:11,560 markieren, um meinen Körper, aber insbesondere in Richtung der Boden der Körper meiner Seite ist so 65 00:03:11,560 --> 00:03:14,170 dass es unter den Knoten und Fragen. 66 00:03:14,170 --> 00:03:19,930 Genauer gesagt, wollen wir hervorheben und schneiden der offene Tag und in der Nähe Tag für Skript 67 00:03:19,930 --> 00:03:24,720 und zu verlagern, dass die gesamte Codeblock zum Ende der Datei hier. 68 00:03:24,720 --> 00:03:27,690 >> Nun ist dies nicht unbedingt der sauberste Design, aber zumindest wird es 69 00:03:27,690 --> 00:03:29,530 durchzusetzen, die richtige Reihenfolge der Operationen. 70 00:03:29,530 --> 00:03:31,495 Lassen Sie die Datei speichern und laden in meinem Browser. 71 00:03:31,495 --> 00:03:34,620 72 00:03:34,620 --> 00:03:40,240 Lassen Sie die Seite neu laden, neu eingegeben meinem Namen, und es ist Hallo David zurück. 73 00:03:40,240 --> 00:03:42,784