2011-09-10 18 views
6

मैं एक समारोह कॉल से एक सरणी वापस जाने के लिए संघर्ष कर रहा हूँ से किसी सरणी लौटें - नीचे दिए गए कोड:jQuery + एक समारोह

///////////// Generic Functions 
function spotJoinPosition() { 
    var pos = { 
       offset: $('div#spotJoinSite').offset(),         
       width: $('div#spotJoinSite').width(), 
       height: $('div#spotJoinSite').height() 
    } 
    return(pos); 
} 


     var positionData = spotJoinPosition(); 
     alert(positionData); 
     alert(positionData[width]); 

जब मैं positionData सचेत मैं [वस्तु] मिल [वस्तु] और फिर अपरिभाषित।

सलाह?

उत्तर

6

alert(positionData[width]);

यह positionData में एक महत्वपूर्ण चेतावनी है, और चर width कुंजी के रूप में इस्तेमाल करते हैं। आपने width नामक चर को परिभाषित नहीं किया है, इसलिए यह अनिवार्य रूप से positionData[undefined] देख रहा है। आप क्या चाहते हैं positionData.width, या positionData['width'] है, लेकिन यहां उद्धरण के लिए कोई कारण नहीं है।

उद्धरण केवल तभी आवश्यक होंगे यदि आपके पास गैर अल्फान्यूमेरिक वर्णों की कुंजी हो। positionData['some-key'] काम करता है, लेकिन positionData.some-key एक वाक्यविन्यास त्रुटि है, क्योंकि चर में - नहीं हो सकता है।

इसके अलावा, आपका कोड त्रुटि होनी चाहिए, क्योंकि चौड़ाई कहीं भी परिभाषित नहीं है। मुझे चिंता है कि आपके पास अपने कोड में कहीं भी वैश्विक स्तर पर परिभाषित width वैरिएबल है।

1

ऐसा इसलिए है क्योंकि positionData एक वस्तु (वस्तु आप spotJoinPosition से लौटने) और चर width चर width अपरिभाषित है कि वस्तु पर मौजूद नहीं है कोई मान होगा।

आप positionData.width या positionData['width'] चाहते हैं।

See the MDN docs on member operators.

+1

वास्तव में , कारण 'स्थिति डेटा [चौड़ाई] 'अपरिभाषित' आउटपुट कर रहा है क्योंकि 'चौड़ाई' * * कहीं परिभाषित है, लेकिन' चौड़ाई' का मान मान्य कुंजी नहीं है अपनी 'स्थिति डेटा' ऑब्जेक्ट में। – Chris

0

प्रयास करें:

alert(positionData.offset); 
    alert(positionData.width); 
    alert(positionData.height); 
0

आप वास्तव में एक सामान्य समारोह है कि एक array, न कि किसी object रिटर्न चाहते हैं, तो आपको निम्न के लिए संशोधित करने के लिए चाहते हो सकता है:

///////////// Generic Functions 
function spotJoinPosition(selector) { 
    var el = $(selector), 
     result = [el.offset(), el.width(), el.height()]; 

    return(result); 
} 

var positionArray = spotJoinPosition("#spotJoinSite"); 
alert(positionArray[0]); // outputs the position 
alert(positionArray[1]); // outputs the width 
संबंधित मुद्दे