2010-07-24 5 views
5

यह मेरी पहली पोस्ट है, लेकिन मैं इस समुदाय में शामिल होने के लिए उत्साहित हूं। मेरे पास जावास्क्रिप्ट के बारे में एक सवाल है जिसे मैं पूरी तरह से स्टंप कर रहा हूं।जावास्क्रिप्ट विधि डब्ल्यू/वैरिएबल आवंटित शुरू होता है ?? बहुत उलझन में

मैं एक जावास्क्रिप्ट एप्लिकेशन लिख रहा हूं जो AJAX का उपयोग कर सर्वर से डेटा खींचता है और उसे चार्ट में जोड़ता है। मैं जेक्वायरी और हाईचार्ट्स को फ्रेमवर्क के रूप में उपयोग कर रहा हूं और फिर इंटरफेस का उत्पादन करने के लिए हाईचार्ट्स के आसपास अपना खुद का जावास्क्रिप्ट 'रैपर' लिख रहा हूं।

जब प्रक्रिया डेटा फ़ंक्शन को जेएसओएन प्रतिक्रिया के साथ वापस बुलाया जाता है, तो यह i = 1 से शुरू होता है, भले ही मुझे अभी भी प्रारंभ या यहां तक ​​कि घोषित नहीं किया जाना चाहिए। अन्य चर भी सेट हैं। (मुझे क्रोम डेवलपर टूल्स का उपयोग डीबग करने के लिए पता है)। इससे मेरा लूप निष्पादित नहीं होता है और चार्ट में मेरा कोई भी डेटा जोड़ा नहीं जाता है।

मुझे नहीं पता कि कितना कोड दिखाना है, लेकिन ये सबसे प्रासंगिक भाग हैं। यदि आवश्यक हो तो मैं और जोड़ सकता हूं।

function getData(series, min, max, numpts) { 
     if (series === undefined) { 
      console.log("error on getData"); 
      return; 
     } 

     var request = {}; 
     request.series = series; 

     if (min !== undefined) { 
      request.start = min; 
     } //in seconds 
     if (max !== undefined) { 
      request.end = max; 
     } 
     if (numpts !== undefined) { 
      request.numpts = numpts; 
     } 
     $.getJSON('/data', request, processData); 
     return; 
    } 

    function processData(data) { 
     // handle the data after it comes back from an ajax request 
     var curSeries, 
      chartSeries, 
      curPoint; 

     for (var i = 0; i < data.length; i ++) { 
      curSeries = data[i]; 
      chartSeries = chart.get(curSeries.name); 

      if (chartSeries === null) { 
       //alert("oops"); 
       chart.addSeries(curSeries); 
      } else { 
       for (var j = 0; j < curSeries.data.length; j ++) { 
        curPoint = curSeries.data[j]; 
        chartSeries.addPoint(curPoint, false); 
       } 
      } 
     } 
     chart.redraw(); 
    } 

ये कक्षा के दोनों तरीके हैं जिन्हें मैंने ग्राफ कहा घोषित किया है।

धन्यवाद अगर किसी के पास कोई विचार है! -मैट पी

+4

'i' कभी भी शुरू नहीं होगा 1. आपका लूप निष्पादित नहीं करेगा एकमात्र तरीका डेटा है। तरंग == 0. 'प्रक्रिया डेटा' के शीर्ष पर 'अलर्ट (डेटा। लम्बाई)' करें और जांचें। – Matt

उत्तर

2

मैं सांत्वना चाहते हैं का निरीक्षण अपने डेटा यकीन है कि यह आप क्या उम्मीद, के रूप में है कि पाश ठीक काम कर रहा हो जाना चाहिए, भले ही मैं पूर्व घोषित है बनाने पर आपत्ति: आप में इसे करने के लिए 0 बताए रहे हैं लूप की शुरुआत, वैसे भी।

एकमात्र कारण मुझे लगता है कि के बारे में सोच सकते हैं मैं परिभाषित किया जाएगा और प्रारंभ करने से पहले आप परिभाषित और प्रारंभ इसे कहीं यदि किसी और अपने codebase में आप वर कीवर्ड के साथ मैं प्रारंभ नहीं है। ऐसा करने से इसे वैश्विक दायरे में डंप कर दिया जाएगा (विंडो ऑब्जेक्ट), जो इसे आपके कोडबेस में किसी भी और फ़ंक्शन को बंद करने के माध्यम से उपलब्ध कराती है।

यदि यह आपकी फ़ाइलों में से किसी एक में नहीं है, तो यह हाइचार्ट्स ग्राफ़िंग लाइब्रेरी में हो सकता है (जिस स्थिति में कहा गया पुस्तकालय से बहुत जल्दी चला जाता है)।

+0

यह भी संभव है कि jQuery लाइब्रेरी वैरिएबल को वैश्विक दायरे में ले जाती है, हालांकि आम तौर पर यह बहुत अच्छी तरह से स्कॉप्ड होती है। किसी भी तरह, जैसा कि आपने कहा था इससे कोई फर्क नहीं पड़ता। जावास्क्रिप्ट दशकों से वैश्विक चर के साथ रहता है, यह हाल ही में है कि स्कोपिंग का ज्ञान व्यापक रूप से फैल गया है। – Guffa

+0

तो मैं क्रोम डीबगर का उपयोग कर रहा हूं, और यह कि मुझे कैसे पता था कि यह पहले ही शुरू हो चुका है ... हालांकि, मैंने जेएसलिंट के माध्यम से अपना कोड चलाया और कुछ सामान साफ ​​कर दिया, ज्यादातर रिक्ति और सामान और गायब; और अचानक यह सब करना बंद कर दिया है ... मुझे यकीन नहीं है कि क्यों उस समारोह के पास वास्तव में कुछ भी नहीं बदला। मुझे यह भी लगता है कि यह क्रोम मुद्दा हो सकता है। मैं थोड़ी देर के लिए उसी टैब में काम कर रहा था, मैंने किसी भी तरह कंसोल को दूषित कर दिया होगा। :( – MattyP

संबंधित मुद्दे