שיעור 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 לא מוצאת חן בעיניך, ישנה דרך נוספת לגשת לאובייקטים קשים לגישה.
חזור לתחילת הדף
לדף הבא «--
|