Get Adobe Flash player
דף הבית משפטי תנאי

מטרת 'משפטי התנאי' היא להחליט אם לבצע פעולה אחת או אחרת על פי עמידה בתנאים שונים. דוגמא: "האם ברצונך לאשר או לדחות?" אם התשובה היא "לאשר", תתבצע פעולה מסויימת, ואם "לדחות", תתבצע פעולה אחרת.

סוגי משפט תנאי

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

ב JavaScript אנו מונים ארבעה סוגים של משפט התניה:

משפט if - השתמש במשפט מסוג זה לביצוע פיסת קוד אם התנאי מוגדר - מתמלא

משפט if... else - השתמש במשפט זה לביצוע פעולה שתי פעולות. אחת אם התשובה לקיום התנאי היא 'כן', והשניה, אם התשובה היא 'לא'.

משפט if... else if.... else -  משפט זה משמש לביצוע מגוון פעולות לפי עמידה בתנאים שונים. המשפט יודע "לקפוץ" מתנאי אל תנאי עד להחלטה

משפט switch - בדומה למשפט הקודם, גם משפט זה משמש לביצוע מגוון פעולות לפי עמידה בתנאים שונים.

משפט if

משפט זה בודק עמידה בתנאי. אם התנאי מתמלא, הוא קוד מתבצע.

תחביר המשפט הוא:

if (תנאי)
{
הקוד שיתבצע אם התנאי מתמלא
}

הסבר: המילה if ('אם') היא לב המשפט והיא מצביעה על תנאי הכתוב בתוך הסוגריים שלאחריה - תוך שימוש באופרטורים אותם למדת בשיעור הקודם.

בשורות הבאות, ובין סוגרים מסולסלות, מופיע הקוד אותו יש לבצע. היה והתנאי מתמלא, הקוד מבוצע. אם לאו, התכנה מדלגת מעל הסוגריים וממשיכה בקריאת הסקריפט של ה- JavaScript (אם אמנם יש המשך) - עד לסיומו.

הערה: המילה if נכתבת באותיות קטנות. כתיבה באות גדולה (IF) תגרום לשגיאה.

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

<script type="text/javascript">
 /*כתוב "בוקר טוב" אם השעה לפני 11*/ 
var d=new Date();
var time=d.getHours();

if (time<11)
  {
  document.write("<b>בוקר טוב</b>");
  }
</script>

הערות חשובות:

  • במשפט התנאי שבדוגמא, לא מופיעה המילה else (אחרת, אם לא). מטרת המשפט היא לבצע את ההוראה רק אם התנאי מתמלא (או בשפת התוכנה, אם המשפט מחזיר true). בדוגמא זו, ייכתב "בוקר טוב" רק אם השעה קטנה מ 11:00. אם לא, לא ייכתב כלום.
  • בדוגמא זו, נעשה שימוש בשני משתנים (d, time) המקבלים את הערך שלהם מתוך שעון המחשב. על תכונות אלה נדבר בפרקים מתקדמים יותר.

משפט if... else

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

תחביר המשפט הוא:

if (תנאי)
{
הקוד שיתבצע אם התנאי מתמלא (true)
}
else
{
הקוד שיתבצע אם התנאי אינו מתמלא (false)
}

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

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

 

<script type = "text/javascript">
/*כתוב "בוקר טוב" אם השעה לפני 11 ו-"יום טוב" אם היא עברה*/

var d= new Date ();
var time= d.getHours ();
if (time<11)
  {
  document .write( "<b>בוקר טוב</b>" );
  }
else 
 {     
 document .write( "<b>יום טוב</b>" );  
 }
</script>

משפט if... else if.... else

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

תחביר המשפט הוא:

if (תנאי)
 {
  הקוד שיתבצע אם התנאי מתמלא (true)
 }
else if (תנאי נוסף)
 {
  הקוד שיתבצע אם התנאי הנוסף מתמלא (true)
 }
else 
 {
הקוד שיבוצע אם אף אחד מהקודמים לא בוצע 
 }

בדוגמא הבאה, ייבדק התנאי הראשון (האם השעה לפני 11). אם true, ייכתב "בוקר טוב", אם false, המשפט יבדוק תנאי נוסף:

האם השעה גדולה מ 11 וגם (and, &&) קטנה מ 17?

אם true, ייכתב "יום טוב" אם false, ייכתב ערב טוב.

<script type="text/javascript">
 /*כתוב "בוקר טוב" אם השעה לפני , 11 "יום טוב" אם אחרי הבוקר אך לפני 17, ו"ערב טוב" אחרי כן. */ 
var d=new Date();
var time=d.getHours();
if (time<11)
  {
  document.write("<b>בוקר טוב</b>");
  }
else if (time>11 && time<17)
 { 
 document.write("<b>יום טוב</b>");
 }
 else
 {
  document.write("<b>ערב טוב</b>"); 
</script>

הערה: אין מגבלה למספר התנאים הנוספים שניתן להוסיף למשפט.

משפט switch

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

תחביר המשפט הוא:

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}

הסבר: המשפט מתחיל המילה switch (שגם היא, כמו המילה if, חייבת להיכתב באות קטנה) לאחריה ובתוך סוגריים כתוב ערך המגדיר את הקריטריון לעמידה בתנאי המבוקש. לרוב, נכתוב בתוך הסוגריים משתנה שיתמלא בערך על פי הגדרות קודמות של הסקריפט.

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

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

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

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

דוגמא:

<script type ="text/javascript" >
switch  ( "apple" )
{
case "orange" :
  document .write( "איזה תפוז גדול!" );
  break ;
case "apple" :
  document .write( "תפוח סמוק לחיים" );
  break ;
case "grapes" :
  document .write( "ענבים נהדרים" );
  break ;
default :
  document .write( "לא מצאנו פרי. אולי תעדיף ירקות?");
}
</script>

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

 

אל השיעור הקודם