![]() |
קריאה לפונקציה שנמצאת בתוך $(document).ready() מבחוץ
מישהו יודע איך אפשר לקרוא לפונקצייה שמוגדרת בתוך $(document).ready() מפונקציה שנמצא מבחוץ?
כלומר משהו כזה: קוד:
function CallMe() |
קוד:
$(document).ready(function() |
לא עובד.. והקטע שזה נתקע באיזו שגיאה כנראה שלא מוצגת לי ב-console
אם אני שם אלרט לפני הקריאה לפונקציה (ניסיתי גם לקרוא לזה סתם כמשתנה) זה עובד, אם אני שם את האלרט אחרי זה כבר לא עובד |
תוכל להביא פה את הקוד תכלס? אולי הבעיה בTIMEOUT
|
יש לי -Timeout שמוגדר ככה (בתוך ה-ready):
קוד:
nextTO = setTimeout( function() { next(); } , 15000); קוד:
var stopTO = function() { clearTimeout(nextTO); alert('test'); } קוד:
function onStateChange(newState) |
קודם כל תוסיף var לפני הnextTO.
דבר שני אם אתה מגדיר את הפונקציה רק לאחר הטעינה אפשר לקצר תהליכים: קוד:
$(function() { // כמו document.ready |
אתה לא יכול, או לפחות לא אמור להיות מסוגל.
זה לא באותו scope, זה לא אמור לפעול. אתה יכול להצהיר על משתנה בחוץ, ולתת לו ערך בפנים, אבל בגדול global variables זה bad practice. |
ציטוט:
אגב, אם כבר נכנסים לעניין של bad practice, באופן אישי באמת הייתי מעדיף לרשום: קוד:
$(function() { |
אין לי כ"כ חשק להתחיל לשנות את כל המבנה עכשיו (אם זאת תהיה הברירה היחידה אני אעשה את זה), אבל הדבר הראשון שכתבת גם לא עבד.
הגדרתי את nextTO בתור var וזה לא עוזר. עשיתי אלרט של טייפ-אוף ובפונקציה onStateChange (זאת שבחוץ) זה מחזיר לי undefined ואם אני עושה באותה פונקציה שמגדירה את זה זה רושם לי number |
אוקיי, הרצתי את הקוד, הבעיה מעצבנת וקשורה בסמנטיקה של Javascript.
לא עובד: קוד:
$(function() { קוד:
var nextTo; |
עומר, אתה הוכחת כרגע את מה שאני אמרתי.
בוודאי שיש scope בjavascript, אני לא מבין למה שלא יהיה. javascript היא שפה רצינית, זה שאפשר להתעלל בה כי הbrowserים יחסית גמישים, זה לא אומר שהיא לא. הדוגמה העובדת אצלך, מוציאה את המשתנה מהscope של הפונקציה האנונימית, ולכן מאפשרת לקרוא למשתנה גם מחוץ לscope של הפונקציה האנונימית. |
ליגה, עובד..
תכלס זה יוצא כמו להגדיר משתנה כ-global, רק לא חשבתי על זה ככה ב-JS משום מה |
ציטוט:
אני לא רגיל לחשוב על JS ככה, וההבדל פה הוא בהצהרה - var Name - בשונה משפות אחרות. אבל אתה צודק, זה פשוט הרבה יותר קשה לראות את זה בשפה כמו JS. חוזר בי :) |
כל הזמנים הם GMT +2. הזמן כעת הוא 05:48. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ