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


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


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

שיעור 4

דף 9: השגת אובייקטים קשים לגישה (Hard to Reach Objects)

אחת הבעיות עם Document Object Model Hierarchy היא הקושי להגיע לאובייקט אותו מבקשים. לדוגמא הנה הפונקציה השואלת את הגולש איזו תמונה להחליף:

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

function swapOne()
{
  var the_image = prompt("change parrot or cheese","");
  var the_image_object;

  if (the_image == "parrot")
  {
    the_image_object = window.document.parrot;
  } else {
    the_image_object = window.document.cheese;
  }

  the_image_object.src = "ant.gif";
}

שים לב לשורות הנראות כך:

the_image_object = window.document.parrot;

פעולה זו מציבה את אובייקט התמונה תוכי למשתנה. למרות שפעולה זו יכולה להראות מוזר, היא חוקית לחלוטין. אך מה קורה אם יש לך 100 תמונות, ולא רק שתיים? תהיה לך הוראת if-then-else גדולה מאוד. זה היה נחמד אילו יכולת רק לעשות זאת:

function swapTwo()
{
  var the_image = prompt("change parrot or cheese","");
  window.document.the_image.src = "ant.gif";
}

למרבה הצער, JavaScript תחפש תמונה הנקראת the_image במקום פשוט לדעת שאתה רוצה ש- the_image יהיה ה"גבינה" - אם המשתמש הקליד "גבינה" (cheese) (לתיבת ה- prompt), או "תוכי" (parrot) – אם היא או הוא הקלידו "תוכי".

למרבה המזל, eval יכולה לעזור לך לקבל את אובייקט התמונה שאתה רוצה:

function simpleSwap()
{
  var the_image = prompt("change parrot or cheese","");
  var the_image_name = "window.document." + the_image;
  var the_image_object = eval(the_image_name);
  the_image_object.src = "ant.gif";
}

אם המשתמש הקליד "תוכי" אל תוך תיבת ה- prompt, השורה השנייה יוצרת מחרוזת הנראית כמו window.document.parrot. ואז ה-eval בשורה השלישית מנחה: "תן לי את האובייקט window.document.parrot" – אשר הוא אובייקט התמונה שאתה רוצה. משקבלנו את אובייקט התמונה שרצינו, אפשר לשנות את ה- source שלו ל- ant.gif. מבהיל, לא? למעשה זה מאוד שימושי, ואנשים משתמשים בזה הרבה.

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

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

לדף הבא «--

 
       
       
   
 
 

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