לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #3  
ישן 04-03-2010, 21:13
  Roi1981m Roi1981m אינו מחובר  
 
חבר מתאריך: 30.10.09
הודעות: 91
אני צריך רמה אחת יותר למטה
בתגובה להודעה מספר 2 שנכתבה על ידי dorM שמתחילה ב "[CODE]// JS function timer()..."

אני שם פה את הקוד אולי תצליח להבין מה גורם לכך ש
countdown לא מוכר בתוך this.time

קוד:
function timer(days,time,msg,path){ this.days = days; this.time = time; this.msg = msg; this.path = path; this.display = display; this.stop = stop; this.run = start(); } function start(){ x = setInterval("countdown()" , 1000); } function display(){ el = document.getElementById(this.path); el.innerHTML = this.days + " : ימים שנותרו" + "<br>" + this.time + " : שעות " ; } function stop(){ alert(this.msg); clearInterval(x); } function countdown(){ th = this.time.substr(0, 2); tm = this.time.substr(3, 2); ts = this.time.substr(6, 2); if (ts > 0) { ts = (ts < 11)? '0'+(ts - 1):(ts - 1); } else { if (tm > 0) { tm = (tm < 11)? '0'+(tm - 1):(tm - 1); ts = 59; } else { if (th > 0) { th = (th < 11)? '0'+(th - 1):(th - 1); tm = 59; ts = 59; } else{ if (this.days > 0){ this.days = this.days - 1 th = 23; tm = 59; ts = 59; } else{ this.stop(); } } } } this.time = th + ":" + tm + ":" + ts; this.display(); } //var t = new timer(0,'00:00:04','roe','roe2') //t.run();


_____________________________________
http://roe25m.co.il

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 04-03-2010, 23:29
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 3 שנכתבה על ידי Roi1981m שמתחילה ב "אני צריך רמה אחת יותר למטה"

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

עשיתי הזחות וסידרתי אותו:
קוד:
function timer(days,time,msg,path) { this.days = days; this.time = time; this.msg = msg; this.path = path; this.display = function() { el = document.getElementById(this.path); el.innerHTML = this.days + " : ימים שנותרו" + "<br>" + this.time + " : שעות " ; }; this.stop = function() { alert(this.msg); clearInterval(x); }; this.run = function() { x = setInterval("countdown()" , 1000); }; } function countdown() { th = this.time.substr(0, 2); tm = this.time.substr(3, 2); ts = this.time.substr(6, 2); if (ts > 0) { ts = (ts < 11)? '0'+(ts - 1):(ts - 1); } else { if (tm > 0) { tm = (tm < 11)? '0'+(tm - 1):(tm - 1); ts = 59; } else { if (th > 0) { th = (th < 11)? '0'+(th - 1):(th - 1); tm = 59; ts = 59; } else{ if (this.days > 0){ this.days = this.days - 1 th = 23; tm = 59; ts = 59; } else{ this.stop(); } } } } this.time = th + ":" + tm + ":" + ts; this.display(); } //var t = new timer(0,'00:00:04','roe','roe2') //t.run();


זה עדיף ככה מפני שיש פחות סיכויים להתנגשות עם שם של פונקציה אחרת.
מה שעשית לא עובד, כי לא קראת לפונקציה countdown על ידי האובייקט t שאליו ביצעת הקצאה new timer. אלא קראת לפונקציה countdown בצורה הבאה:
קוד:
x = setInterval("countdown()" , 1000);


הרי המילה this תלויה באובייקט שממנו בוצעה הקריאה. כיוון שהקריאה לא בוצעה ע"י אובייקט מסויים, אז המילה this שייכת לאובייקט window, שאין לו מאפיין time.

לכן יש לתקן את זה ל:
קוד:
x = setInterval("t.countdown()" , 1000);

במידה והאובייקט t גלובאלי.

אתה יכול לראות את זה בפעולה במסמך ה-HTML הזה: JS_Calls.html
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 05-03-2010, 21:42
  Roi1981m Roi1981m אינו מחובר  
 
חבר מתאריך: 30.10.09
הודעות: 91
דור תודה רבה על העזרה
בתגובה להודעה מספר 1 שנכתבה על ידי Roi1981m שמתחילה ב "גישה למאפיין באובייקט מתוך מתודה"

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




קוד:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> <script type="text/javascript"> function timer(days,time,msg,path) { var obj = this; var x; this.days = days; this.time = time; this.msg = msg; this.path = path; this.display = function() { el = document.getElementById(this.path); el.innerHTML = this.days + " : ימים שנותרו" + "<br>" + this.time + " : שעות " ; }; this.stop = function() { alert(this.msg); clearInterval(x); }; this.countdown = function() { th = this.time.substr(0, 2); tm = this.time.substr(3, 2); ts = this.time.substr(6, 2); if (ts > 0) { ts = (ts < 11)? '0'+(ts - 1):(ts - 1); } else { if (tm > 0) { tm = (tm < 11)? '0'+(tm - 1):(tm - 1); ts = 59; } else { if (th > 0) { th = (th < 11)? '0'+(th - 1):(th - 1); tm = 59; ts = 59; } else{ if (this.days > 0){ this.days = this.days - 1 th = 23; tm = 59; ts = 59; } else{ this.stop(); } } } } this.time = th + ":" + tm + ":" + ts; this.display(); } this.run = function() { x = setInterval(function(){obj.countdown()} , 1000); }; } t = new timer(4,'00:00:04','המכרז סגור','roe2') t.run(); m = new timer(2,'00:00:60','המכרז סגור','roe4') m.run(); </script> </head> <body> <div id="roe2">1</div> <div id="roe4">2</div> </body> </html>



_____________________________________
http://roe25m.co.il

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:59

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר