הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   קבלת משתנה בJS מתוך פונקציה אחת, לאחרת? (https://hosts.co.il/forums/showthread.php?t=98860)

trupix 26-07-12 01:57

קבלת משתנה בJS מתוך פונקציה אחת, לאחרת?
 
הי,

בקוד שלי יש את הפונקציה הבאה:

PHP קוד:

function examlpe(current) {
current 10;


כאשר לוחצים על כפתור "Set Current", הוא קורא לפונקציה הנ"ל, משמע כאשר המשתמש ילחץ עליו יהיה משתנה גלובלי בשם current בעל הערך 10.

יש לי כפתור נוסף, כאשר המשתמש לוחץ עליו הוא קורא לפונקציה הבאה:

PHP קוד:

function readExample() {
alert(current);


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

אה וכן, אני שונא JS. (משמע אין כאן אפשרות להשתמש בJQ ...)

אשמח לעזרה!
thanks!

M.a.T.a.N 26-07-12 02:04

הקודים של הפונקציות בכלל לא נכונות...
למשל בפונקציה הראשונה, אתה כביכול מקבל ערך של CURRENT (בתוך הסוגריים של הפונ') אבל מיד אחרי זה מגדיר משתנה CURRENT ?
לעומת זאת בפונקציה השניה לא הגדרת משתנה + לא קיבלת אף משתנה בפונקציה (בסוגריים..) ואתה מנסה להציג פלט של המשתנה ?

תחביר ממש לא נכון.... אם כבר זה היה אמור להיות ככה הפונ' הראשונה:
PHP קוד:

function examlpe(current) {
alert(current);


וככה השניה:
PHP קוד:

function readExample() {
var 
current 10;


למרות שלפי מה שהבנתי אתה רוצה לקרוא מהפונקציה הראשונה לשנייה ואז זה כבר:
PHP קוד:

function examlpe() {
var 
current 10;
readExample(current);


function 
readExample(current) {
alert(current);



trupix 26-07-12 02:18

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

OmerC 26-07-12 03:02

למה לא להשתמש בפונקציה אחת כך :
PHP קוד:

function example(current) {
alert (current);


מקבלים ערך מהמשתמש ומציגים אותו.

Daniel 26-07-12 06:33

HTML קוד:

<script type="text/javascript">
current = 0;
function example(toCurrent) {
current = toCurrent;
}

function readExample() {
alert(current);



example(67);

readExample();
</script>

הטעות בקוד שלך היא שברגע שכתבת את current בתור פרמטר, אז הוא כבר לא גלובאלי כברירת מחדל.

אדיר 26-07-12 06:52

לפרטים נוספים חפש בגוגל Javascript variable scope

BuildDream 26-07-12 07:24

אם תגדיר את המשתנה מחוץ לפונקציה הוא יהיה גלובלי ותוכל לגשת אליו מ2 פונקציות שונות

trupix 26-07-12 15:01

ציטוט:

נכתב במקור על ידי Daniel (פרסם 852275)
הטעות בקוד שלך היא שברגע שכתבת את current בתור פרמטר, אז הוא כבר לא גלובאלי כברירת מחדל.


אוי אוי אוי ... צודק, טעות נוראה!
תודה! היה לוקח לי זמן לקלוט את זה ..

ממש ממש תודה לכל מי שלקח חלק! מעריך את זה |קורץ|

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

trupix 26-07-12 17:39

שאלה כללית,

כשאני מצהיר -
num = 1,
ואני מנסה לחשב פעולות פשוטות כמו חיבור וחיסור, אני מקבל התייחסות שונה למשתנה.

לדוגמא (שימו לב לפלט של כל אחת מההודעות)

PHP קוד:


getNum 
1;

function 
myFunc(getNum) {
    
    
num getNum;
    
alert (num 1); // Output: 11
    
alert (num 1); // Output: 0




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

עריכה
מסתבר שהפונקציה שראיתי היא כן הפיתרון:
PHP קוד:

num parseInt(getNum); 


Daniel 26-07-12 17:52

ציטוט:

נכתב במקור על ידי trupix (פרסם 852351)
שאלה כללית,

כשאני מצהיר -
num = 1,
ואני מנסה לחשב פעולות פשוטות כמו חיבור וחיסור, אני מקבל התייחסות שונה למשתנה.

לדוגמא (שימו לב לפלט של כל אחת מההודעות)

PHP קוד:


getNum 
1;

function 
myFunc(getNum) {
    
    
num getNum;
    
alert (num 1); // Output: 11
    
alert (num 1); // Output: 0




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

עריכה
מסתבר שהפונקציה שראיתי היא כן הפיתרון:
PHP קוד:

num parseInt(getNum); 


שמח לעזור!

אתה צודק במה שאתה אומר שבפעולת חיבור, כאשר אחד הערכים הוא string - אז זה שרשור של הערכים:
PHP קוד:

"a" "1a" 

במקרה שאתה הצגת - דווקא זה בסדר. אם תריץ:
PHP קוד:

myFunc(1);

function 
myFunc(getNum) {
    
    
num getNum;
    
alert (num 1); // Output: 11
    
alert (num 1); // Output: 0




תקבל 2 ו-0.
אבל אם זה היה string - אז כמו שכתבת, צריך להשתמש ב-parseInt.


אגב, אם אתה רוצה כלי נוח כדי לבדוק, להריץ ולשתף קטעי קוד - http://jsfiddle.net/
יש לך שלושה ריבועים שבהם אתה יכול להכניס דברים - CSS, HTML, JavaScript - אתה יכול לטעון מראש מחלקות (mooTools, jQuery), ולשמור ולהריץ.


כל הזמנים הם GMT +2. הזמן כעת הוא 19:14.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ