Spreker 1: Nou in die laaste voorbeeld, onthou dat ons afgewissel sommige JavaScript-kode binnekant van my HTML, spesifiek, binnekant van die waarde van die kenmerk 'n beroep op Stuur vir daardie vorm tag. Nou vir klein bladsye, hierdie is nie so 'n groot deal. Maar as 'n webblad kry meer en meer kompleks, net om jou JavaScript-kode hier en daar binnekant van die waarde van die eienskappe is nie die beste ontwerp. Beste as ons 'n faktor wat uit en ten minste het dit binne-in die script tag sentraal. Hoe om dit te doen? Wel, laat ons teruggaan na my vorm tag en eerste van hierdie eienskap en sy vee waardeer geheel en al. Dan hier, eerder as om te definieer 'n funksie genoem Groet, laat hang na die reël van die kode wat uiteindelik ons sal nog steeds wil uit te voer en te vervang die Groet funksie soos volg. Document.get Element By ID haal unquote demo - waar demo, onthou, is die unieke id vir die vorm self - dot op lê, wat onthou is die naam van die gebeurtenis hanteerder in wat ons is geïnteresseerd. En laat ons ken wat op dien hanteerder die waarde wat is eintlik 'n funksie self. Nou sien dat ek nie eintlik roep 'n funksie hier. Ek plaas die definisie van 'n anonieme, andersins bekend as 'n lambda-funksie, deur die spesifiseer tussen hierdie krulhakies 'n klomp van die kode dat indien werklik uitgevoer word. Spesifiek, die kode wat ek wil uit te voer, is dat die lyn wat ek gehad het voor, en dan laat ons voeg by dat die terugkeer valse sodat hierdie vorm is nie uiteindelik voorgelê afgeleë web te beëindig bediener in die tradisionele manier. Kom ons nou ook red van hierdie lêer, maak dit in 'n leser, en kyk wat gebeur. http://localhost/dom-1.html. Kom ons tik nou in my naam, David, Stuur. En niks blyk te gebeur behalwe die URL van my bladsy lyk verander het asof die vorm was eintlik aan die dieselfde lêer. Nou hoekom sou dit wees? Wel, ek moet 'n paar meer inligting. So laat ons gaan voort en oop Chrome se Ontwikkelaar gereedskap sodat ek kan eintlik kyk na die konsole venster te sien As ek iets verkeerd gedoen het nie. Ek kan toegang wat via 'n paar van die maniere. Een van wat via die spyskaart hier, dan onder Tools, dan af te Ontwikkelaar gereedskap. En sien hier in die blad Console, daar is 'n uncaught tipe fout, kan nie stel eiendom op dien van nul. Nou hoekom sou dit wees? Wel terug in my bron-kode hier, kennisgewing wat op lê ek dink is 'n eiendom van die element se unieke identifikasie is demo. 'N element, weer, is net 'n knoop in 'n boom. So blyk dit dat my browser nie dink dat daardie element of node bestaan ​​nie. En inderdaad, dit nie doen nie. Onthou dat 'n webblad is geparseerd of lees deur 'n webblaaier, bo na onder, links na regs. En so wanneer JavaScript-kode is ondervind, tipies, is dit uitgevoer dadelik. Maar in hierdie geval, ons het nog nie eens gekry nog aan die deel van die Dom, die HTML, waarin die vorm van 'n unieke identifikasie demo verklaar is. En so het ons probeer om uit te voer my JavaScript-kode voor daardie knoop selfs bestaan ​​in die boom wat, natuurlik, is problematies, want dan, dit is sekerlik die element self sal van nul op daardie tydstip. So hoe op te los? Wel, ons het 'n paar van die oplossings. Maar laat ons probeer om die eenvoudigste deur die verskuiwing my scripttag van die hoof merk aan my liggaam nie, maar spesifiek na die onderkant van my bladsy se liggaam so dat dit onder die knope en vrae. Spesifiek, laat lig en sny die oop tag en naby tag vir script en hervestig dat die hele blok van die kode aan die onderkant van die lêer hier. Nou is dit nie noodwendig die skoonste ontwerp, maar ten minste sal dit dwing die regte volgorde van bedrywighede. Kom ons stoor die lêer en herlaai in my leser. Kom ons herlaai die bladsy, weer insette my naam, en daar, Hello Dawid is terug.