ג'אווה סקריפט - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


tdknight

Recommended Posts

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

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 עם שם המשתנה הזה, וזה יפסיק.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...