js click evenimente. Secvența de execuție a scriptului. Eveniment JavaScript onclick și trei moduri de a gestiona evenimente
Gestionarea evenimentelor
Programe client pentru JavaScript se bazează pe un model de programare în care execuția programului este condusă de evenimente. Cu acest stil de programare, browserul web generează un eveniment când se întâmplă ceva cu documentul sau cu un element al acestuia. De exemplu, un browser web generează un eveniment când termină de încărcat un document când utilizatorul trece mouse-ul peste un hyperlink sau apasă o tastă de pe tastatură.
Dacă o aplicație JavaScript este interesată de un anumit tip de eveniment pentru element specific document, poate înregistra una sau mai multe funcții care vor fi apelate atunci când are loc acest eveniment. Vă rugăm să fiți conștienți de faptul că acest lucru nu este trasatura unica programare web: toate aplicațiile cu interfata grafica Utilizatorii acționează în acest fel - așteaptă constant să se întâmple ceva (adică așteaptă să apară evenimente) și răspund la ceea ce se întâmplă.
Tipul evenimentului este un șir care identifică tipul de acțiune care a provocat evenimentul. Tipul „mousemove”, de exemplu, înseamnă că utilizatorul a mutat indicatorul mouse-ului. Tipul „keydown” înseamnă că a fost apăsată o tastă de pe tastatură. Iar tipul „încărcare” înseamnă că descărcarea documentului (sau a unei alte resurse) din rețea s-a încheiat. Deoarece tipul de eveniment este doar un șir, uneori este numit numele evenimentului.
Ținta unui eveniment este obiectul în care a avut loc evenimentul sau cu care este asociat evenimentul. Când vorbesc despre un eveniment, ei menționează de obicei tipul și scopul evenimentului. De exemplu, evenimentul „încărcare” al unui obiect Window sau evenimentul „click” al unui obiect . Cele mai tipice obiective ale evenimentelor din aplicații clientîn JavaScript sunt obiecte fereastră, document și element, dar unele tipuri de evenimente pot apărea în alte tipuri de obiecte.
Un handler de evenimente este o funcție care procesează sau răspunde la un eveniment. Aplicațiile trebuie să-și înregistreze funcțiile de gestionare a evenimentelor cu browserul web, specificând tipul și scopul evenimentului. Când un eveniment de tipul specificat are loc pe ținta specificată, browserul va invoca handlerul. Când handlerii de evenimente sunt apelați pe un obiect, uneori spunem că browser-ul a „suscitat” sau „a aruncat” evenimentul.
Un obiect eveniment este un obiect asociat cu un anumit eveniment și care conține informații despre acel eveniment. Obiectele eveniment sunt transmise funcției de gestionare a evenimentelor ca argument (cu excepția IE8 și mai noi versiuni anterioare, unde obiectul eveniment este disponibil doar ca variabilă globală de eveniment). Toate obiectele eveniment au proprietatea tip, care definește tipul de eveniment și proprietatea ţintă, definind scopul evenimentului.
Pentru fiecare tip de eveniment, un set de proprietăți este definit în obiectul eveniment asociat. De exemplu, un obiect asociat cu evenimentele mouse-ului include coordonatele indicatorului mouse-ului, iar un obiect asociat cu evenimentele de la tastatură conține informații despre tasta apăsată și tastele modificatoare apăsate. Pentru multe tipuri de evenimente, sunt definite numai proprietăți standard, cum ar fi tipul și ținta, și nu sunt transmise proprietăți suplimentare. Informatii utile. Pentru aceste tipuri de evenimente, simpla apariție a evenimentului este importantă și nicio altă informație nu este relevantă.
Propagarea evenimentelor este procesul prin care browserul decide pe ce obiecte să apeleze gestionatorii de evenimente. În cazul unor evenimente destinate singurul obiect(cum ar fi evenimentul „încărcare” al obiectului Window), nu este nevoie să le propagați. Cu toate acestea, atunci când un eveniment are loc pe un element de document, acesta se propagă sau „bulează” în arborele documentului.
Cod JavaScript:
Funcția clickOnButton(button)( alert("Ați făcut clic pe un buton cu identificatorul: " + button.id); )
Salvați documentul, deschideți-l în browser și faceți clic pe butonul.
În același mod, puteți afișa numele butonului ( butonul.nume) sau valoarea acestuia ( buton.valoare)
Obținerea lățimii și înălțimii unui elementDe asemenea, puteți afla valorile proprietăților CSS ale unui element, de exemplu, lățime și înălțime. Proprietățile clientWidth și offsetWidth sunt folosite pentru a obține lățimea, iar proprietățile clientHeight și offsetHeight sunt folosite pentru a obține înălțimea. De exemplu, să afișăm lățimea și înălțimea butonului pe care s-a făcut clic.
Acum, conținutul funcției clickOnButton va fi astfel:
Funcția clickOnButton(button)( //alert("Ați făcut clic pe un buton cu ID: " + button.id); var width = button.clientWidth || button.offsetWidth; var height = button.clientHeight || button.offsetHeight; alert("Lățimea butonului: " + lățime + "\nÎnălțimea butonului: " + înălțimea); )
Rezultatul acestui exemplu:
Permiteți-mi să vă reamintesc că lățimea elementului este calculată împreună cu valoarea de umplutură, deci este egală cu 111px [ 99px(width) + 6px(padding-left) + 6px(padding-right) ].
Dacă nu aveți nevoie să scrieți mult cod pentru a procesa un eveniment, puteți scrie acest cod direct în valoarea handlerului. Adică, în loc să apelăm o funcție, scriem imediat codul necesar.
De exemplu, când se încarcă o pagină, puteți afișa un mesaj că „pagina se încarcă”. Pentru a face acest lucru, trebuie să utilizați evenimentul de încărcare și handlerul său de încărcare. Vom scrie acest handler în eticheta body de deschidere.
Această metodă poate fi utilizată numai dacă este necesară o singură linie scurtă de cod pentru a procesa evenimentul. În caz contrar, dacă codul de procesare constă dintr-o linie lungă sau mai multe linii, atunci trebuie să utilizați o funcție.
Și la sfârșitul acestui articol, ne vom uita la un exemplu simplu de procesare a formularelor. Procesarea formularului în JavaScript, în primul rând, reduce sarcina pe server și, în al doilea rând, oferă un avantaj suplimentar utilizării site-ului.
Formularul constă dintr-un câmp de conectare și un buton de trimitere. La trimiterea formularului, vom verifica lungimea de conectare. Lungimea sa trebuie să fie mai mare de trei caractere.
Să începem cu structura HTML a acestui formular.
Acum, să adăugăm un handler onsubmit pentru evenimentul de trimitere ca atribut etichetei de formular. În felul următor:
Evenimentul de trimitere se declanșează atunci când formularul este trimis. Am scris declarația de returnare pentru a preveni trimiterea formularului dacă este detectată o eroare în introducerea datelor. Dacă funcția returnează false, atunci valoarea handler-ului onsubmit va fi „return false”, ceea ce înseamnă că formularul nu va fi trimis la server. În caz contrar, dacă formularul returnează true, atunci valoarea handlerului va fi „return true” și formularul va fi trimis fără probleme.
Uneori este necesar să dezactivați complet trimiterea formularelor, caz în care valoarea handler-ului onsubmit va fi astfel:
Onsubmit = "checkForm(this); return false;"
După cum probabil ați ghicit deja, checkForm este numele funcției care va fi apelată atunci când se declanșează evenimentul de trimitere. Îl puteți numi cum doriți, urmând convențiile de denumire a funcției.
Și așa, să revenim la exemplul nostru. Acum trebuie să descriem funcția checkForm. Va contine urmatoarea conditie: daca lungimea autentificarii este mai mica de trei caractere, atunci returnam false si formularul nu va fi trimis, in caz contrar, daca datele au fost introduse corect, atunci trimitem formularul catre server.
Funcția checkForm(form)( //Obțineți valoarea câmpului formular al cărui nume este login var login = form.login.value; //Verificați dacă lungimea de conectare este mai mică de trei caractere, apoi afișați un mesaj de eroare și anulați trimiterea form. if(login .length > 3)( alert("Lungimea autentificarii trebuie sa fie mai mare de trei caractere"); return false; )else( return true; ) )
Salvăm documentul, îl deschidem în browser și îl testăm.
În acest fel, puteți verifica formularul în JavaScript și anula trimiterea lui în cazul unei erori.
Ei bine, asta e tot, dragi cititori. Să rezumam.
Evenimentele sunt folosite foarte des, așa că trebuie să poți lucra cu ele 100%.
În acest articol ați aflat ce sunt un eveniment și un handler de evenimente. Ați învățat cum să obțineți valorile atributelor elementului și cum să găsiți lățimea și înălțimea unui element. De asemenea, ați învățat cum să efectuați validarea formularelor.
Sarcini- Creați un formular cu două câmpuri numerice (type="number") pentru introducerea numerelor și un buton etichetat „Adăugați”
- Când faceți clic pe butonul de trimitere, apelați funcția pentru procesarea acestui eveniment.
- În interiorul funcției, obțineți valorile câmpului și, folosind metoda de alertă, afișați rezultatul adunării numerelor introduse.
- Asigurați-vă că formularul nu este trimis după ce faceți clic pe butonul.
onClick este evenimentul numărul 1 pe ecranul utilizatorului.
onСlick este un clic (sau clic) al utilizatorului pe un obiect.
După ce fiecare astfel de utilizator face clic, pe ecran ar trebui să apară o acțiune de răspuns. Acest lucru asigură interactivitatea interfeței și confirmă principiul principal de comunicare între un computer și o persoană - faceți clic, răspundeți, faceți clic, răspundeți.
În jargonul utilizatorului, evenimentul onСlick poate fi numit orice doriți. De îndată ce utilizatorii obișnuiți nu numesc acest sărac onClick - faceți clic, trageți, faceți clic, faceți clic, bang etc. ... Dar esența acestui lucru nu s-a schimbat de ani de zile - dacă utilizatorul este activ pe ecran și face clic pe un obiect, atunci computerul trebuie să răspundă în mod adecvat la el (utilizatorul). Acesta este onСlick.
Evenimentul onClick este de o importanță capitală în orice limbă. Și HTML nu face excepție de la asta. Este cunoscut. Într-adevăr, dacă după ce faceți clic (onСlick) pe un element nu se întâmplă nimic în browser, atunci de ce să vă deranjați să programați ceva pe site? Așadar, onСlick este un invitat binevenit pe orice ecran de Internet (sau mic ecran).
Acum, mai aproape de subiect. Mai precis, onClick-ul nostru pe o pagină de site din browser este un eveniment dintr-un script Java, pentru care HTML servește doar ca cadru pentru plasarea codului constructelor sale. Și, din punctul de vedere al validității codului acestui HTML, ar fi corect să scrieți onclick și nu onСlick (cum sunt obișnuiți mulți programatori de aplicații). Pentru că în HTML toate etichetele și structurile sunt scrise doar cu litere mici.
Nu există litere mari în HTML. Nu, asta e tot! Și pentru acei „răi” care scriu în HTML cu majuscule, în vremurile bune era obișnuit să le taie mâinile până la genunchi. În plus. Se spune că sub părintele țar Ivan cel Groaznic, pentru scris în HTML, așa ceva te-ar putea pune cu ușurință, dacă nu te trage în țeapă, atunci pe spânzurătoare. Acest lucru este absolut exact. Chiar acum, desigur, curtenii și conducătorii au devenit mai calmi. Cu toate acestea, atunci când scrieți orice cod, trebuie să observați cel puțin aspectul decenței. Din acest loc începe povestea despre onclick-ul corect.
Deci, este decis și dovedit (pentru HTML).
În primul rând, scriem onclick, nu onСlick!!!
MENIU Nr. 1
sau
MENIU Nr. 1
Ne vom da seama ce înseamnă aceste replici nebunești puțin mai târziu, dar deocamdată...
- În principiu, evenimentul onclick dintr-un script Java în HTML poate fi atașat la orice element de cod al unei pagini HTML, fie că este ,
Sau . Browserul va „devora” totul și totul va funcționa. Singurul lucru este că accesul la un element de la tastatură este posibil doar pentru un obiect link sau buton. Și, dacă presupunem pentru o clipă că utilizatorul nu are mouse și lucrează exclusiv cu tastatura, atunci tot ceea ce va putea atinge pe site vor fi doar butoane sau link-uri. Nu există a treia! Prin urmare, „atașarea” evenimentului onclick la obiecte care nu sunt accesibile de la tastatură este pur și simplu urâtă. Ei bine, nu uman, cumva. Aceasta aduce a doua regulă pentru onclick în HTML - acest eveniment trebuie conectat doar la un link (eticheta „a”) sau la un buton (eticheta „button”). În caz contrar, codul va funcționa în continuare, dar la naiba, o tigaie mare separată a fost pregătită pentru astfel de programatori.
Deoarece formatarea (în HTML) și lucrul cu butoane („pâini”) provoacă anumite dificultăți, singurul, universal și cea mai bună opțiune rămâne doar linkul (eticheta „a”). Dar chiar și cu această etichetă, nu totul este atât de simplu. Acum, să revenim la analiza cu linia noastră de cod:
MENIU Nr. 1
Aruncăm linkurile de titlu din discuție ca fiind un lucru complet evident. Rămâne
MENIU Nr. 1
Toate scrierile ulterioare vor fi legate de subiectul blocării atributului href, care trebuie să fie „paralizat” în mod corespunzător, astfel încât linkul să înceteze să mai fie un link de lucru, dar să îndeplinească totuși funcțiile onclick .
return false; - Aceasta este o blocare directă a atributului href. Dacă utilizatorul are scriptul Java activat în browserul său, evenimentul onclick va fi apelat din scriptul corespunzător, mai degrabă decât să urmeze linkul. Adică, astfel încât atunci când dați clic pe „link-ul de apel” să nu existe o tranziție imediată la adresa din href, evenimentul de returnare fals este adăugat la onclick; și se presupune că mai întâi va fi executată o funcție care va anula legătura dacă javascript este activat. Astfel, conținutul atributului href nu are sens deoarece este ignorat atunci când este executat scriptul java.
Dar aici este întrebarea. Ce se întâmplă dacă utilizatorul are script-ul Java dezactivat (dezactivat) în browser-ul său? Cum se va comporta linkul nostru atunci? Nu te voi intriga, dar o voi posta imediat opțiuni posibile evoluții ale evenimentelor - valori posibile ale atributului href și comportamentul corespunzător al browserului după ce faceți clic pe un astfel de link atunci când scriptul Java este dezactivat.
Desigur, dacă javascript este dezactivat în browserul utilizatorului, aceasta este o problemă și o pacoste. Dacă execuția scripturilor Java este dezactivată (interzisă) în browserul utilizatorului, atunci problemele continue încep cu atributul href, deoarece eticheta „a” este încă un link și browserul va încerca să navigheze la ea.
Nu puteți elimina complet atributul href din link. Este imposibil să te descurci fără atributul href din textul linkului și orice validator va fi imediat jignit pentru un astfel de ultraj împotriva corpului ei picant și delicat. Aceasta înseamnă că mai rămâne o singură opțiune - să umple atributul href cu conținut digerabil. Aici este posibil: lăsați href complet gol, completați-l cu un semn ascuțit „#” sau expresie javascript://. Când scriptul Java este dezactivat (sau scăpat), după ce faceți clic pe astfel de link-uri se va întâmpla următoarele:
Testare Atributul href este gol. După ce faceți clic pe un astfel de link, pagina din browser se va reîncărca pur și simplu. Exemplu Atributul href are valoarea „#”. După ce face clic pe un astfel de link, utilizatorul va fi aruncat în partea de sus a paginii, fără a-l reîncărca. Încerca Atributul href are valoarea „javascript://”. După ce faceți clic pe un astfel de link, nu se va întâmpla nimic. href="javascript://" - făcând clic pe link va fi pur și simplu ignorat de browser. Valoarea „javascript://” pentru atributul href este un „stub” standard pentru blocarea unui link atunci când scriptul Java este dezactivat.
href="javascript://" - prostii!De ce prostii? Pentru că, viața pe internet în lume motoare de căutareîși face propriile ajustări. Din punct de vedere corect și semantic! layout, ar fi absolut logic să scrieți un link real în atributul href și să adăugați un titlu real pentru acest link. Apoi, după ce faceți clic pe un astfel de link, se va întâmpla unul dintre cele două lucruri: fie va fi executat evenimentul onclick din scriptul Java corespunzător, fie va avea loc o tranziție prin linkul real către pagina reala, (dacă scriptul Java este dezactivat sau glitched/subîncărcat).
Deci, să rezumam. În linkul pentru apelarea evenimentului Java script, în href plasăm un link real către pagina reală la care să navigăm când javascript este dezactivat, iar în onclick - o funcție care apelează o solicitare de a executa scriptul când Javascript este pornit .
Cu alte cuvinte, „href” ar trebui să conțină un link complet normal și funcțional către orice pagină web către care utilizatorul va fi redirecționat atunci când face clic pe „linkul de apel la eveniment” oprit Script Java și care va fi ignorat de script când inclus Script Java. Asta e tot …
Ei bine, până la urmă -
Verificarea browserului pentru a-l activa/dezactiva scriptul JavaCodul standard pentru o astfel de verificare arată astfel:
Ai javascript dezactivat...
Unde, pentru că puteți scrie orice stil în CSS, cu excepția display:none; și stiluri similare... Un browser este un MUST!!! va afișa acest mesaj pe ecran dacă utilizatorul dezactivează scriptul Java în browserul său. În acest mod simplu, webmasterii scriu adesea: „Vă rugăm să activați javascript” sau afișați câteva imagini frumoase cu o cerere similară, sau altceva... În interiorul etichetei noscript Puteți plasa orice etichetă HTML. Și aceasta nu este o precauție inutilă. În ciuda faptului că acum nu este atât de ușor să găsești un site care să nu folosească javascript deloc.
Cel ce nu este cu noi este împotriva noastră
Problema cu scriptul Java dezactivat în browser poate fi, în general, rezolvată radical și radical. De exemplu, adăugați cod HTML5 în interiorul secțiunii, cum ar fi:
unde, http://mysite.ru/ este o pagină web către care este imediat redirecționată
utilizator când dezactivat în browser Script Java.
Salutări tuturor celor care doresc să înțeleagă funcționarea onclick(). Articolul de astăzi vă va ajuta să înțelegeți odată pentru totdeauna principiul de funcționare. al acestui manipulator evenimente și rezolvați exemplu concret onclick JavaScript, sau mai degrabă exemple.
Vă voi arăta mai multe moduri de a lucra cu acest instrument, vă voi explica avantajele și dezavantajele și, de asemenea, vă voi descrie Lucrul jQuery cu evenimentele. Acum să trecem la analiza materialului!
Atribuirea de gestionare a evenimentelorMai întâi, să ne uităm la partea teoretică a întrebării. Aproape toată lumea procesează scripturi pe paginile lor. Și, de obicei, acestea sunt evenimente diferite. Pentru ca toate aceste evenimente programate să se declanșeze, trebuie instalat un handler pentru ele.
Conform regulilor de scriere, toți handlerii includ „on+event name” în numele lor, care este observat în onclick(). În funcție de evenimentul selectat, procesarea va avea loc din cauza acțiuni diferite. În cazul nostru, când folosiți onclick(), vor fi executate doar acele evenimente care au fost cauzate de clicul stâng al mouse-ului.
Diferite moduri de a atribui un handler de evenimenteAstăzi, există mai multe opțiuni pentru introducerea unui handler pentru anumite evenimente sau evenimente în cod.
Utilizarea evenimentelor simpleSa incepem cu varianta simpla, care constă în încorporarea onclick() în marcajul documentului html în sine. Arata cam asa:
După cum puteți vedea, când faceți clic pe butonul cu butonul stâng al mouse-ului, apare mesajul „Click-click!”. Aș dori să vă atrag atenția asupra unui mic, dar semnificativ detaliu. Puteți utiliza doar ghilimele simple ('') în interiorul unei alerte.
De asemenea, în în acest caz, poate fi folosit cuvânt cheie acest. Se referă la elementul curent și oferă toate metodele disponibile pentru acesta.
Click pe mine
Această linie de cod creează un buton cu textul „Click on me”. După apăsare, veți vedea un mesaj pe ecran: „„Apăsați!” Acesta va înlocui prenumele butonului.
Această metodă este, fără îndoială, foarte simplă. Cu toate acestea, este potrivit doar pentru sarcini similare, de ex. afișați mesaje sau executați comenzi simple.
Dacă este necesar să folosiți structuri ciclice, folosiți etichete etc., atunci aceasta metoda nu se potriveste. Acesta va reduce lizibilitatea codului și, de asemenea, îl va face voluminos și neglijent.
În acest caz, ar trebui să apelați la funcții.
Lucrul cu funcțiiFuncțiile vă permit să vă separați codul necesarîntr-un bloc separat, care poate fi apelat ulterior printr-un handler de evenimente în .
De exemplu, am atașat o aplicație pentru a afișa utilizatorului numărul rezultat în diverse puteri, începând de la 1 și terminând cu 5. Pentru a face acest lucru, am creat o funcție countPow(), căruia i se pot transmite parametri. În aplicația mea, utilizatorul trebuie să introducă un număr ca variabilă de funcție.
Astfel, prin intermediul handler-ului asociat funcției sus-numite, au fost efectuate calcule și afișate pe ecran.
var rezultat =1; funcția countPow(n) ( for(var i=1; i