הנך נמצא: מדריך מתקדם / שיעור 3 / דף 6
 


המדריך של תאו ל- JavaScript
 


דפים בשיעור זה:
1: JavaScript מתקדם
2: כיצד לתזמן אירועים
3: לולאות תזמון – מהן?
4: לולאות מתזמנות – איך?
5: שעון JavaScript
6: קוצבי זמן עם משתנים
7: הבחנה בין דפדפנים
8: הבחנה בין דפדפנים
9: אוביקט ומתודת הזיהוי
10: אובייקט ההיסטוריה
11: שעור 3 - חזרה
|
|
|
|
|
|
|
|
|
|
|
|

שיעור 3

דף 6: שימוש בקוצבי זמן עם משתנים.

כמו שציינתי קודם לכן, setTimeout הוא כמו סימון זמן כלשהו בעתיד עבורו JavaScript תבצע פקודה. זה יפה ומסודר כאשר ה- setTimeout הוא משהו כזה:

the_timeout = setTimeout("alert('Hello!');", 60000);

var the_string = "hello";
the_timeout = setTimeout("alert(the_string);", 60000);

קוד זה אומר ל - JavaScript לחכות דקה אחת ואז לזרוק תיבת אזהרה אשר מכילה משתנה כלשהו שניתן ע"י the_string. לכן אחרי דקה, JavaScript מחפשת משתנה אשר נקרא the_string וקוראת ל- ()alert עם המשתנה הזה. הבעיה? בדקת זמן אחת, משתנה the_string יכול להכיל משהו שונה לגמרי מ – "hello!" למעשה, אם היו לך את שתי השורות של JavaScript למעלה בתוך פונקציה, ה- setTimeout בוודאי היה נותן לך שגיאה. לדוגמא, אם הייתה לך פונקציה כמו זו:

function alertInAMinute()
{
  var the_string = "hello";
  the_timeout = setTimeout("alert(the_string);", 60000);
}

ואז היית קורא לפונקציה בפנים קישור כמו:

<a href="#" onClick="alertInAMinute(); return false;">blah!</a>

זה היה בוודאי מוביל לשגיאה, משום שהגדרת משתנה שנקרא the_string בתוך הפונקציה, ע"י שימוש ב-var. זכור: אם אתה משתמש ב-var בתוך פונקציה, ככל שJavaScript יודעת, זה קיים רק בתוך אותה פונקציה. פונקציה זו יוצרת משתנה הנקרא the_string, מכוונת את ה- setTimeout, ואז יוצאת. בגלל שהשתמשת ב-var, המשתנה שנקרא the_string נמחק מתוך הזיכרון של JavaScript. ואז, כאשר JavaScript מחפשת את the_string בזיכרון שלה רגע אחר כך, הוא למעשה לא קיים, ויצרת לעצמך שגיאה.

בעיה זו צצה משום שאתה מעביר משתנה ל- setTimeout. סלק את הבעיה בכך שתעביר לו את הערך של המשתנה במקום את המשתנה עצמו. זו הדרך לעשות זאת:

function alertInAMinute()
{
  var the_string = "hello";
  the_timeout = setTimeout("alert(" + the_string + ");",60000);
}

קוד זה מושך את המשתנה the_string החוצה מתוך המירכאות של setTimeout. ומשום שהמשתנה אינו בתוך מירכאות, JavaScript שמה את הערך של המשתנה.

אתה בוודאי שואל מדוע אני טורח עם משתנה מלכתחילה. ובכן, אני מפשט דברים על מנת להבהיר נקודה. כאשר תכין את שעורי הבית של היום, בוודאי תראה היכן זה באמת משנה.

טוב, מספיק על קוצבי זמן. כמו שאמרתי קודם לכן, משתמשים בקוצבי זמן בכל מקום ב-HTML דינאמי, כך ששווה ללמוד אותם. הידע שלמדנו בשיעור זה ישרת אותך היטב, במיוחד ביום השלישי, היכן שנלמד אותך איך לגרום לדברים לעוף לרוחב המסך.

אבל אל תסחף יותר מידי בשמחת המולטימדיה, על מנת להפוך את כל זה ליישים עבור מיליוני המשתמשים אשר אינם יכולים לראות HTML דינאמי, עליך לדעת לגלות באילו דפדפנים הגולשים המבקרים באתר שלך, משתמשים.

חזור לתחילת הדף

לדף הבא «--

 
       
       
   
 
 

עמוד ראשי
מדריך בסיסי
מדריך מתקדם
החלפת תמונות
גניבת קוד
מפת האתר