עבור לתוכן

בעיה בפונקציות בשפת Javascript

Featured Replies

פורסם

שלום לכולם,

אני מנסה לעשות באתר שלי בשורת המשימות (איפה שיש דף הבית, הרשמה וכו') שאם אני שם את העכבר על אחד מהם, התמונה משתנה.

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

מה שניסיתי לעשות הוא :

<img src="register.gif" width="145" height="50" name="register1" id="register1" value="1" onmouseover="changepic("registermouse.gif","register1")"/>

זה אחת מהתמונות לדוגמא כאשר registermouse זה התמונה שמתקבלת אחרי כאשר שמים את העכבר על התמונה register. והנה כל הסקריפט של הjava :

<script type="text/javascript">
var name;
var pic;
function changepic(pic, name)
{
name.src = pic;


}
</script>

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

פורסם

מן הסתם זה לא יעבוד, אתה נותן לו סטרינג למה שהוא יבין מזה שאתה רוצה לתת לו אובייקט?

אם אתה שולח את שם האלמנט- תעשה לפרמטר document.getElementByID(elementName) ואז הוא יחזיר לך את האובייקט.

פורסם

חוץ מזה, אתה לא צריך להצהיר על pic ו-name כמשתנים כשהם כבר פרמטרים לפונקציה.

הועבר לפורום פיתוח אתרי אינטרנט, אגב.

פורסם
  • מחבר

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

פורסם

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

אם אתה רוצה להעביר את האובייקט עצמו לפונקציה, זה צריך להיראות ככה (לדוגמה):

onmouseover="changepic("registermouse.gif", this)"

לחלופין, מה שdomiel הציע זה שבמקום name.src = pic יהיה:

document.getElementById(name).src=pic;

כמובן, אל תעשה את שני השינויים. בחר איזה מהם שנראה לך יותר ותשתמש בו.

פורסם
  • מחבר

כנראה לא הבנתם נכון מה אני רוצה לעשות. בפישוט אני פשוט רוצה להעביר 2 שמות שהם סטרינגים - registermouse.gif ו - register1 לפונקציה ואז להשתמש בהם בפונקציה.. אין לי מושג למה זה לא עובד לי בדרך שאני עושה...

פורסם

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

הסבר מפורט יותר:

אתה לא יכול לקחת את השם של האובייקט, ולהשתמש בו כאילו הוא האובייקט.

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

הדוגמאות האלה לא יעבדו:

"register1".src = "something ";

var name="register1";
name.src = "something";

וזאת כן:

name = getElementById("register1");
name.src = "something";

פורסם

כנראה לא הבנתם נכון מה אני רוצה לעשות. בפישוט אני פשוט רוצה להעביר 2 שמות שהם סטרינגים - registermouse.gif ו - register1 לפונקציה ואז להשתמש בהם בפונקציה.. אין לי מושג למה זה לא עובד לי בדרך שאני עושה...

כי אתה לא משתמש בהם נכון?

פורסם

אין סיבה לזלזל, הוא סה"כ ציפה שהשפה תעשה בשבילו משהו לגיטימי- מבחינתו לתת ID של אובייקט כלשהוא מסמל את האובייקט עצמו- לא כל בן אדם שמתכנת ג'אווהסקריפט תכנת איי פעם בשפת OOD אמיתית, הרבה מפתחים מגיעים מהכיוון של עיצוב ולא מהכיוון הצפוי יותר של תכנות נטו.

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

פורסם

בנוסף אי אפשר להשתמש במרכאות (") גם כדי לעטוף את ההגדרה של onmouseover וגם בתוך ההגדרה עצמה, תחליף אחד מהשימושים לגרש:


onmouseover="changepic('registermouse.gif','register1')"

פורסם

^^

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

לכן אמרתי את זה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים