עבור לתוכן

ג'אווה סקריפט

Featured Replies

פורסם

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

setTimeOut

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

פורסם

למה הכוונה?

איזה אירוע קורא לפונקציה הזאת?

פורסם
  • מחבר

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


<html>
<head>
<script>
var X=0;
function func1()
{
var ctimer;
if (X==100)
{
return;
}
X=X+1;
ctimer=setTimeOut('func1()', 1000);
}
function func2()
{
x=0;
}
</script>
</head>
<body>
<img src='bla.jpg' onMouseOver='func1()' onMouseOut='func2()'>
</body>
</html>

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

פורסם

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

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

עכשיו, תגדיר משתנה בולאני גלובלי, תאפס אותו ל-FALSE - ובתחילת הפונקציה של OnMouseOver תהפוך אותו ל-TRUE. חוץ מזה, בכניסה לפונקציה FUNC2 תשנה את ערכו ל-FALSE שוב.

בפונקציה הנוספת שיצרת בשביל הספירה, תבדוק, לא רק אם X==100 - אלא גם אם הערך הוא TRUE. אם הוא לא, אין סיבה להמשיך...

זה ברור?

פורסם

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

פורסם
  • מחבר

bla תודה רבה לך, לא חשבתי על זה

ארכיון

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

דיונים חדשים