קורס JS – בני ברק – שיעור 4 – ארועים

סיכום שיעור

חזרה על שיעורי בית

אתגרים בזמן חזרה על שיעורי הבית

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

הגדירו משתנה גלובלי שתפקידו להחזיק את כל המשולש

שנו את הפונקציה כך שבמקום שתדפיס שורה לקונסול, תכין מחרוזת (שורה אחת) ותוסיף אותה למשתנה הגלובלי שהגדרתן

על מנת שההדפסה אכן תצא במשולש (במספר שורות) השורה שהפונקציה תכין תכלול בתחילתה את המחרוזת <p> ובסיומה את המחרוזת </p>

למשל כך

<p>1</p>

<p>22</p>

 

המחרוזת שצריכה להיות במשתנה הגלובלי בסוף התוכנית (עבור 3 למשל) היא

<p>1</p><p>22</p><p>333</p>

בסוף התוכנית נדפיס את המחרוזת שלנו לאלמנט מסויים על המסך באמצעות פקודה כזו:

document.getElementByID("id").ineerHTML = "מחרוזת כלשהי";

 

 

שלב שני –

הדפסת המשולש הזה למסך כאשר הפונקציה מחזירה ערך

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

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

;(oterText += oneLine(x

 

כיצד תוכלו למרכז משולש זה?

סיכום שיעור

ב JS ישנן שלוש דרכים לשלב טיפול בארועים

דרך 1 – ב HTML בתוך תגית הפתיחה

this היא מילה שמורה שמאפשרת לנו להתייחס לאלמנט שעליו קרה הארוע

דרך 2 – על ידי אובייקט של ה dom (באמצעות getElementById ודומיו)

דרך 3 – addEventListener – לא הגענו עדיין

היתרונות של הדרך השלישית:

ניתן לקשר מספר תגובות לאותו ארוע על אותו אלמנט

הקוד הוא חיצוני

האזנה מתבצעת רק מרגע שקישרנו אותה עד שניתקנו ולא כל התוכנית

נכון להתרגל לדרך זו גם משום שבהמשך נעבוד ב jQuery בסינטקס שמזכיר את זה.

 

 

הכרנו את הארועים:

click

change

focus

mousedown

mouseup

mouseover

mouseout

 

הכרנו את הפונקציות:

focus – שימש אותנו לתת את הפוקוס לאלמנט מסויים

toUpperCase – שימש אותנו להפוך מחרוזת לאותיות גדולות

 

תרגילי הדגמה בכיתה

http://gamani.info/prog/JS/lesson4/lesson4-events-class.zip

 

שיעורי בית

תרגיל 4 – הדפיסו למסך ומרכזו

תרגיל 5 – צרו משולש בדומה לזה אבל ממרוכז…

אתגר –  להדפיס למסך את לוח הכפל

(אתגר בריבוע – פתחו חשבון באתר https://codepen.io והעלו את הפתרונות לשם…)

 

ארועים –

צרו ממשק מחשבון BMI בדומה לתמונה

מדובר בעמוד HTML הכולל שתי שדות (inputs) כפתור (button) ופסקה (כרגע ריקה ולאן לא נראית) עבור התוצאה.

 

טפלו בלחיצה על כפתור "חשב"

הוסיפו תגובה לארוע של פוקוס (onfocus) על השדות וקשרו לפונקציה שמשנה את שצבע הרקע של השדה

הוסיפו תגובה לארוע של איבוד פוקוס (onblur) על השדות וקשרו לפונקציה שמשנה את שצבע הרקע של השדה חזרה ללבן

הוסיפו תגובה לארוע של שינוי ערך (onchange) בשדות וקשרו לפונקציה שבודקת שאכן הכניסו מספר

התרגיל יכלול 5 פונקציות:

  1. פונקציה שמחשבת את ה BMI
  2. פונקציה שמטפלת בלחיצה על כפתור "חשב" ומפעילה את החישוב על הנתונים מתוך השדות
  3. פונקציה אחת שמטפלת בקבלת פוקוס לinput ומשנה צבע רקע (הפונקציה מקבל את האלמנט עצמו באמצעות שליחה של this)
  4. פונקציה שמטפלת בעזיבת input ומשנה את צבע הרקע חזרה ללבן (הפונקציה מקבל את האלמנט עצמו באמצעות שליחה של this)
  5. פונקציה שמטפלת בהכנסה של ערך ל input ובודקת שאכן הכניסו מספר

 

 

 

 

 

משימת טיפול בארועים 2 –

 

בנו עמוד אינטרנט שמדמה חנות כמו בתמונה

כל מוצר נמצא בתוך div  משלו ויש לו:

מחיר משלו (אלמנט עם id יחודי)

שדה כמות משלו (אלמנט עם id יחודי)

כפתור הוספה משלו (אלמנט עם id יחודי)

הגדירו בתוכנית שלכן משתנה גלובלי שבו ישמר כל הזמן המחיר הסופי שיש לשלם עד כה (בהתחלה כמובן 0)

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

לעת עתה יהיו לכן 3 פונקציות של הוספה כאשר כל אחת תטפל בכפתור של מוצר אחד ותיגש למחיר שלו ולשדה הכמות שלו ותבצע את חישוב המחיר וההוספה.

הוסיפו טיפול בפוקוס על Input  ובעזיבה שלו (ממש כמו בתרגיל הקודם)

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

הוסיפו בדיקה כי הגולש הכניס לשדה כמות מספר ולא תו אחר וכן אל תאפשרו רכישה של יותר מ 10 פריטים בבת אחת.

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

 

 

 

פתרונות

שמנה לב – בפתרון של החנות הוצאת את ה JS לקובץ נפרד ולכן עטפתי אותו ב onLoad כפי שהתחלתי להסביר בכיתה אבל טרם הצגתי דוגמא. נדבר על זה כמובן בשיעור הקרוב.

http://gamani.info/prog/JS/lesson4/lesson4-hw-sol-loops-events1.zip

 

 

בשיעור הבא נפתח ב onload ונעבור לארועים באמצעות הדרך השלישית שטרם הגענו אליה

חזרה לעמוד הקורס

אשרה גרינבלט

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