-
მაქვს ვებგვერდი, "ოჰ არას" სურათით,
-
რომელიც გაგიჟებულია, რომ
სამყაროს დასასრული მალე დადგება --
-
კონკრეტულად, 500 წამში.
-
მინდა ეს ვებგვერდი
უფრო სასარგებლო გავხადო,
-
ეს რიცხვი
გადავაქციო რეალურ უკუთვლად,
-
ისე რომ, ვიზიტორებმა
შეძლონ ნახვა, რამდენი დრო დარჩათ.
-
ახლა, როცა გავაცოცხლეთ ვებგვერდი,
-
სტრატეგია შემდეგია: უნდა ვიპოვოთ
რაღაც ელემენტი მასში,
-
შემდეგ რაღაც შევცვალოთ
ამ ელემენტში
-
და ეს რამდენჯერმე გავიმეოროთ.
-
პირველ რიგში უნდა ვიპოვო მთვლელი
მისი ID-თი
-
ეს მარტივია.
-
[ბეჭდავს]
-
შემდეგ, უნდა დავწერო ფუნქცია, რომელიც
უკუსვლით დაითვლის.
-
[ბეჭდავს]
-
შემდეგ კი --
-
მინდა რომ 'textContent' იყოს
-
წინა რიცხვს მინუს ერთის ტოლი.
-
'textContent' რეალურად იქნება ხაზი,
-
რომელიც გვინდა გადავქციოთ რიცხვად
-
ამის გაკეთება 'parcfloat()' -ით შეგვიძლია.
-
შემდეგ კი შეგვიძლია გამოვაკლოთ ამას 1.
-
დაბოლოს, ჩვენ ამ ფუნქციის გამოძახება
გარკვეული ინტერვალით გვინდა,
-
ანუ, წამში X-ჯერ.
-
ამის გაკეთებაში გამოგვადგება
'window.setInterval()'
-
ეს ფუნქცია მოითხოვს ორ არგუმენტს:
-
გამოძახების ფუნქციას და მილიწამების
რაოდენობას, რომლის გასვლისასაც
-
ეს ფუნქცია ისევ უნდა გამოვიძახოთ.
-
გამოძახების ფუნქციის განსაზღვრა შეგვიძლია
ისევე,
-
როგორც ის ღონისძიების დამსწრეთათვის
განვსაზღვრეთ: სახელით
-
შემდეგ კი - ახლა ის ძალიან სწრაფია,
-
იმიტომ რომ
წამების არგუმენტი არ განგვისაზღვრავს--
-
გვინდა, რომ ეს მილიწამების გარკვეული
რაოდენობის გასვლისას მეორდებოდეს;
-
კერძოდ, ერთხელ წამში რომ მეორდებოდეს.
ანუ, ყოველ ათას მილიწამში
-
იმიტომ რომ წამში ათასი მილიწამია.
-
მშვენირია, ახლა ყოველ წამში
თითო რიცხვით გადადის უკან.
-
490 წამი დაგრჩა, რომ მაქსიმალურად ბევრი
რამ ისწავლო!
-
კიდევ ერთი ფუნქცია, რომელსაც ხანდახან
'setInterval'-ის მაგივრად ვიყენებთ
-
არის 'setTimeout'
-
ახლა შევცვლი და დააკვირდით,
თუ შეამჩნევთ სხვაობას
-
ერთი წამიც მოიცადეთ..
-
აი, ახლა, ალბათ, ხედავთ, რომ როცა
ვიყენებთ 'setTimeout' ფუნქციას
-
ბრაუზერი ფუნქციას იძახებს ერთხელ,
გამეორების გარეშე.
-
ასე რომ, ამ შემთხვევაში ეგ არ გამოგვადგება.
-
მაგრამ სხვა შემთხვევებში შეიძლება ძალიან
სასარგბელო ფუნქცია აღმოჩნდეს:
-
მაგალითად, თუ ჩვენს მომხმარებლებს
გამაფრთხილებელ ბანერს ვუჩვენებთ
-
და გვინდა, რომ იგი 10 წამში გაქრეს.
-
ახლა ეს ისევ 'setInterval'-ად
შევცვალოთ.
-
ახლა, როცა მსგავს ანიმაციებს ვტესტავთ
-
უნდა ვნახოთ, როგორ გამოიყურება ის თავიდან
ბოლომდე;
-
მაგალითად, უნდა ვნახოთ, რა ხდება
როცა მივიღებთ 0-ს.
-
ძალიან დიდი ხანი მოგივწევს ცდა
-
რაც მოსაწყენია;
-
ამიტომ საწყის წერტილად ავიღოთ 5
-
და ვნახოთ, რა მოხდება.
-
ოთხი, სამი, ორი, ერთი, ნული...
-
მინუს ერთი, მინუს ორი.
-
ეს ცოტა უცნაურია.
-
როცა სამყარო დასრულდება, უბრალოდ უნდა
ავფეთქდეთ და შევწყვიტოთ თვლა.
-
გამოდის, რომ ჩვენ გვინდა
-
შევაჩეროთ უკუთვლა, როცა ის ნულამდე მივა.
-
ამის გაკეთება 'if' პირობით შეგვიძლია,
ფუნქციის შიგნითვე.
-
პირველ რიგში, მიმდინარე დრო ცვლადად
უნდა შევინახო, იმიტომ რომ
-
მას არაერთხელ გამოვიყენებთ.
-
ავიღოთ ეს, ჩავსავთ აქ;
-
და ჩავანაცვლოთ ეს ცვლადით 'currentTime'
-
ახლა უნდა შევქმნა 'if' პირობა,
-
რომლის გამოც ტექსტი შეიცვლება მხოლოდ მაშინ
როცა 'currentTime' 0-ზე მეტია.
-
ერთის გამოკლება მხოლოდ ამ შემთხვევაში გვინდა.
-
ეს აქ უნდა გადავიტანო, შიგნით.
-
ეს მუშაობს.. თუმცა ამ მიდგომას ერთი დიდი
ნაკლი აქვს.
-
ბრაუზერი გააგრძელებს ფუნქციის გამოძახებს
ყოველ ერთ წამში,
-
სანამ ვებ-გვერდი ღიაა.
-
ბრაუზერებს კი უამრავი სხვა საქმე აქვთ
გასაკეთებელი
-
და ტყუილ-უბრალოდ არ უნდა გამოვაძახებინოთ
ფუნქცია.
-
ამიტომ, სინამდვილეში გვინდა, რომ
-
ბრაუზერმა შეწყვიტოს ფუნქციის გამოძახება,
როცა იგი ნულს გაუტოლდება.
-
ამას ახალი მეთოდის გამოყენებით ვიზამთ,
რომელსაც ჰქვია 'window.clearInterval()'.\
-
ჩავსვათ ეს 'window.clearInterval()' აქ -
'else' -ის ველში.
-
ახლა ფუნქციას უნდა მივაწოდოთ არგუმენტი,
რომ გაიგოს, რომელი ინტერვალი უნდა შეწყვიტოს.
-
გვერდზე ხომ ბევრი სხვადასხვა ინტერვალი
შეიძლება, გვქონდეს.
-
იმისთვის, რომ გავიგოთ, რომელი
ინტერვალია შესაწყვეტი,
-
'setInterval'-ის შედეგი უნდა შევინახოთ ცვლადად.
-
ახლა მაქვს მთვლელის ცვლადი,
რომელიც შემიძლია აქ ჩავსვა
-
და გავაგებინო ფუნქციას, რა უნდა შეწყდეს
როცა მთვლელი მივა 0-მდე:
-
უნდა დასრულდეს განახლება
და ამ ფუნქციის გამოძახება.
-
ყოველი ანიმაციისთვის ზედმიწევნით ზუსტად
უნდა განსაზღვროთ,
-
რა პირობით უნდა ჩერდებოდეს იგი.
-
და კი, შეიძლება ისეთი ანიმაცია შექმნათ,
რომელიც უსასრულოდ უნდა გრძელდებოდეს,
-
მაგრამ ეს რამე გასაკუთრებით კარგი უნდა იყოს
-
იმიტომ რომ თქვენი ბრაუზერი რეალურად
იტვირთება, როცა იძახებს რაღაც ფუნქციას.
-
ახლა კი დროა ავაფეთქოთ ეს სამყარო!