-
ფორმა არის ვებ-გვერდის ინსტრუმენტი,
რომლითაც იგი უგზავნის ინფორმაციას სერვერს.
-
ხანის აკადემიაზე უსაფრთხოების მიზეზით
-
გვერდებს არ ვაძლევთ სერვერებთან
დაკავშირების უფლებას.
-
ამიტომ, აქ არ ვასწავლით ფორმებს.
-
მაგრამ ახლა, რადგანაც JavaScript-ს სწავლობ
გვერდების სამართავად
-
შემიძლია გაჩვენო, როგორ გამოიყენო JavaScript
ფორმის ელემენტების დასამუშავებლად
-
იმის მაგივრად, რომ გაუგზავნო ისინი სერვერს.
-
აქ ჩავსვი რამდენიმე ფორმა, მაგალითად
მომხმარებლის სახელისა
-
და ენის გასაგებად.
-
მინდა, რომ გვერდი მომხმარებელს მის
მშობლიურ ენაზე მიესალმოს,
-
როცა ისინი ამ ღილაკს დააჭერენ.
-
პირველ რიგში, ღილაკის ელემენტი
უნდა შევინახოთ ცვლადში.
-
მაგალითად:
`document.getElementById("button")`.
-
შემდეგ უნდა განვსაზღვროთ ფუნქციის
event listener.
-
`var onButtonClick = function() {`
-
და შემდეგ აქ უნდა მივამაგრებინოთ შეტყობინება
-
`document.getElementById("message")`,
-
გვექნება პატარა საყვარელი შეტყობინება
`div`.
-
შემდეგ კი უბრალოდ `textContent +=
"აქ დაკლიკეთ? დიდი მადლობა!"`
-
აი, ასე.
-
დაბოლოს, მესამე ნაბიჯი, ღილაკს უნდა
დავურთოთ event listener
-
რომელიც გამოიძახებს ფუნქციას, როცა
ღილაკს დააჭერენ.
-
დავურთოთ: `("click", onButtonClick)`.
-
ახლა დააპაუზე ტუტორილი და შეამოწმე,
ხომ ისე მუშაობს ყველაფერი, როგორც მოელოდი.
-
ახლა კი ისე გავაკეთოთ, რომ მართლა
ფორმის შიგთავსზე დაყრდნობით თქვას რამე.
-
როგორ გამოვიყენოთ მომხმარებლის მიერ
შეყვანილი ინფორმაცია?
-
შევქმნათ ამისთვის ცვლადი.
-
`var name = document.getElementById`,
-
რადგანაც მას აქვს ID
-
მას მივიღებთ აქ.
-
გავაკეთოთ ახალი ხაზი მისალმებისთვის,
და დავუკავშიროთ მას შევყანილი სახელი
-
გამოვა `var greeting = "Heyaz"`,
ეს ჩემი საყვარელი მისალმებაა,
-
` + name`.
-
ახლა გვაქვს ხაზი და კიდევ რაღაც, რაც
ინახება ამ ცვლადში.
-
ახლა კი, ეს ტექსტი
ნამდვილი მისალმება უნდა იყოს.
-
აბა, ვნახოთ, ხომ ყველაფერი სწორად გვაქვს
-
ვიპოვეთ, სად შეყვათ სახელი,
შევქმენით მისალმების ხაზი
-
და დავუკავშირეთ ის ცვლადს.
-
დააპაუზე ტუტორიალი და ნახე,
თუ მუშაობს ყველაფერი.
-
არც ისე, ჰო?
-
ხედავ შეტყობინებას "Heyaz [object Object]", ან
"Heyaz object Element"?
-
თუ დავუშვებთ, რომ შენი სახელი არ არის Object
-
იმ შეთხვევაშიც კი, თუ არის
(რაც მშვენიერია)
-
აქ რაღაც შეცდომაა.
-
უნდა დაგვენახა ის, რაც აქ ჩაწერე,
-
მაგრამ სინამდვილეში მივიღეთ "object".
-
ეს იმას ნიშნავს, რომ ცვლადი "name"
მიუთითებს ობიექტზე,
-
და არა ხაზზე, რომელზეც გვეგონა, რომ
მიუთითებდა.
-
შეიძლება, უკვე მიხვდი, როგორ
გამოასწორო პრობლემა.
-
ცვლადში "name" ჩვენ შევინახეთ
მთელი ელემენტი-ობიექტი
-
ელემენტი-ობიექტი კი ძალიან დიდი ობიექტია
-
უამრავი ინფორმაციით ელემენტის შესახებ:
-
ყველა მისი ატრიბუტითა და მეთოდით.
-
იმისთვის, რომ გავიგოთ, რა ჩაწერა მომხმარებელმა,
ელემენტის კონკრეტულ თვისებაზე
-
უნდა გვქონდეს წვდომა: მნიშვნელობაზე.
-
უბრალოდ უნდა დავუმათოთ `.value`
და ეს გვიშველის.
-
დააპაუზე ტუტორიალი და სცადე კიდევ ერთხელ
-
ახლა გამოვიდა, ჰო ასეა?
-
ეს შეცდომა ძალიან გავრცელებულია, ამიტომ
ყურადღებით იყავი
-
კიდევ ერთ გავრცელებულ შეცდომას გაჩვენებ
-
ავიღოთ ეს ხაზი და გავიტანოთ იგი
ფუნქციის გარეთ.
-
დააპაუზე ტუტორიალი, ჩაწერე რამე და
დააჭირე ღილაკს.
-
თუ ყველაფერი ისე გაფუჭდა,
როგორც უნდა გაფუჭებულიყო,
-
მაშინ შენი სახლის მაგივრად ცარიელი
ხაზი უნდა დაგენახა.
-
ხვდები, რატომ?
-
დაფიქრდი იმაზე, როგორ მუშავდება კოდის
თითოეული ხაზი.
-
ამ კოდში ბრაუზერი ტვირთავს გვერდს
-
და ასრულებს JavaScript-ის ხაზებს
ერთი მეორეს თანმიმდევრობით.
-
პირველ რიგში, იგი ინახავს ცვლადში
ღილაკის ელემენტს.
-
შემდეგ ინახავს ცვლადში შეყვანილი
ელემენტის მნიშვნელობას.
-
მაგრამ ის ინახავს მნიშნველობას,
როცა გვერდი იტვირთება..
-
მნიშვნელობა კი ამ დროს ცარიელია.
-
შემდეგ იგი განსაზღვრავს ფუნქციას და
ანიჭებს მას event listener-ს
-
მისი გამოძახების შემდეგ,
სახელი ისევ იგივე ხაზია,
-
რაც გვერდის ჩატვირთვისას იყო.
-
ამიტომ listener ვერასდროს ვერ გაიგებს,
რა ჩაწერა მომხმარებელმა ბოლოს.
-
ამიტომ, კოდის ეს ხაზი
-
უნდა იყოს event listener-ის
ფუნქციის შიგნით,
-
იმისთვის რომ მნიშვნელობა დაფიქსირდეს მაშინ,
როცა ეს მოვლენა განხორციელდება.
-
ახლა ვნახოთ ენის მნიშვნელობა,
-
უნდა დავწრმუნდეთ, რომ ყველაფერი
კარგად გაიგე.
-
ენას 'lang' ცვლადში შევინახავ, მოვლენის კონტროლში.
-
რა საშინლად გამოიყურება ვიზუალურად,
-
მოვაწესრიგოდ ყველაფერი
-
აი, ასე.
-
[ბეჭდავს]
-
ალბათ, ამჩნევ, რომ ჩემს ცვლადებს იგივეს
ვარქმევ, რაც ჩემს ID-ებს
-
მაგრამ ეს მე ვაკეთებ ასე, შენ შეგიძლია
სხვა სახელები დაარქვა.
-
მინდა, რომ სხვადასხვა შეტყობინება დაინახონ,
იმაზე დაყრდნობით, თუ რომელი ენა აირჩიეს.
-
მიაქციე ყურადღება, რომ მნიშვნელობა არ
არის იგივე, რაც მენიუში ჩანს
-
მნიშვნელობა HMTL ატრიბუტია,
-
'lang' უნდა იყოს
"en", "es", ან "plt"
-
რაც ნიშნავს
`if (lang === "es")`,
-
მისალმება იქნება "Hola"
-
გავაგრძელოთ და ჩავსვათ ეს მისალმების
ცვლადი აქ.
-
ანუ 'greeting' იქნება "Hola" + სახელი
-
და თუ 'lang' უდრის "ptl"-ს,
ანუ Pig Latin-ს,
-
მისალმება იქნება
"Ello-hey, " + სახელი
-
ინგლისურისთვის კი შეგვიძლია გამოვიყენოთ
'else'
-
რომელიც უბრალოდ გადმოვიტანე აქ.
-
ესეც ასე.
-
და, თუ გინდა, ბონუს-ამოცანა:
-
სცადე გააკეთო Pig Latin
სახელების კონვერტერი;
-
იმისთვის, რომ მისალმებაში სახელიც
Pig Latin ენაზე იყოს.
-
ძალიან მაგარი იქნება.
-
დააპაუზე ახლა ტუტორიალი,
შეიყვანე სახელი,
-
აირჩიე ენა და ნახე, რა გამოვა.
-
კარგია, არა?
-
ცოტა JavaScript-ისა და ფორმების გამოყენებით
ბევრი რამის გაკეთება შეგიძლია:
-
სიტყვების თამაშების, რიცხვების თამაშების,
ისტორიების შექმნა..
-
და თუ ხანის აკედემიის ფარგლებს გარეთ გაქვს სერვერი
-
შეგიძლია გამოიყენო JavaScript მონაცემების
პირველადი დამუშავებისთვის,
-
სერვერზე გაგზავნამდე.
-
არის კიდევ ბევრი სხვა მოვლენა, რომელიც
ფორმასთან შეგიძლია აკონტროლო,
-
მაგალიად, კლავიატურის ღილაკის დაჭერა.
-
მთავარია, გახსოვდეს, რომ
შენ გაინტერესებს მნიშვნელობა
-
და ეს მნიშვნელობა სწორ დროს
უნდა დაფიქსირდეს.
-
უფრო მეტ პრაქტიკას შემდეგ
დავალებაში მიიღებ.
-
შემდეგი დავალება ჩემი პირადი ფავორიტია.