2009-08-27 5 views
5

इस पर मेरे दिमाग को रैक करना। मेरे पास नीचे कोड है: जावास्क्रिप्ट गेम के पहले चरण। सभी ऑब्जेक्ट्स अच्छी तरह परिभाषित हैं और मैं डीओएम इंटरैक्शन के लिए jQuery का उपयोग कर रहा हूं। पहेली निम्नलिखित जे एस कोड के साथ बनाया जाता है:लूप के लिए एक पुनरावृत्ति के बाद क्यों रोक रहा है?

var mypuzzle = new puzzle("{solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]}"); 

हालांकि, कोड के तल पर पाश पहली यात्रा से आगे नहीं जाएगी। कोई विचार क्यों? बिल्कुल कोई त्रुटि नहीं फेंक दी जाती है।

function equationBox(equation, top, left) {//draggable equation box 
    this.reposition = function() { 
     this.top = 0; 
     this.left = 0; 
    } 
    this.top = 0;//make random 
    this.left = 0;//make random 
    this.equation = equation; 
    if(top && left) { 
     this.top = top; 
     this.left = left; 
    } 
    this.content = this.equation.LHS.string + '<span> = </span>' + this.equation.RHS.string; 
    this.DOM = $('<li>').html(this.content); 
} 


function puzzle(json) { 

    this.addEquationBox = function(equationBox) { 
     $('#puzzle #equations').append(equationBox.DOM); 
    } 

    this.init = function() { 
     //this.drawPuzzleBox(); 
     this.json = JSON.parse(json); 
     this.solution = new expression(this.json.solution || ''); 
     this.equations = this.json.equations || []; 
     var iterations = this.equations.length; 
     for(i=0;i<iterations;i++) 
     { 
      console.log(i); 
      this.addEquationBox(new equationBox(stringToEquation(this.equations[i][0]),this.equations[i][1], this.equations[i][2])); 
     } 
    } 
    this.init(); 
} 
+0

"पुनरावृत्तियों" को क्या सेट किया गया है? – ChrisF

+0

'JSON.parse' कहां परिभाषित किया गया है? –

+0

जब आप इसे डीबग करते हैं तो क्या होता है? – Charlie

उत्तर

11

संभवतः गुंजाइश की विफलता अपने काउंटर चर यह क्या कर रहा है, खासकर यदि आप (यह की आदत डालें, क्योंकि आप उस नाम के वैश्विक चर का उपयोग कर रहे हैं और किसी भी छोरों आप किसी भी कोड में लिखा है आप ' फिर से कॉल करना एक ही बात कर रहा है)। आज़माएं:

for(var i=0;i<iterations;i++) 
+1

+1। क्लासिक जावस्क्रिप्ट गोचा। – AnthonyWJones

+0

उत्कृष्ट - धन्यवाद – wheresrhys

1

क्योंकि यह .equations = this.json.equations || [], और, के बाद से this.json.equations अपरिभाषित है, यह []

+1

जिसके परिणामस्वरूप लूप शून्य पुनरावृत्तियों के लिए चल रहा है, न कि एक। – chaos

+1

आपको क्यों लगता है कि json.equations अनिर्धारित है? यदि JSON ने इनपुट जेसन को पैरा को पार्स किया है, तो यह एक सरणी – AnthonyWJones

+1

होना चाहिए, यह एक मौका है। चूंकि हमारे पास एक चोटी लेने के लिए पूरी परियोजना उपलब्ध नहीं है, इसलिए हम केवल धारणाएं बना सकते हैं और संभावित रूप से त्रुटियों का सुझाव देने के लिए अनुभव का उपयोग कर सकते हैं। मैंने अभी अपनी क्रिस्टल बॉल का उपयोग किया है। दरअसल, कथन के लिए वैश्विक चर के रूप में "i" का उपयोग करके स्कोप गलती के कारण त्रुटि अधिक हो सकती है। – Rodrigo

0

आप JSON.parse उपयोग कर रहे हैं के रूप में https://github.com/douglascrockford/JSON-js/blob/master/json2.js में परिभाषित मान लिया जाये को असाइन किए जाएंगे, ऐसा लगता है कि आपके json स्ट्रिंग ठीक से पार्स करने नहीं है:

var string1 = "{solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]}" 
JSON.parse(string1); // throws SyntaxError("JSON.parse") 

जब मैं JSON.stringify, एक ही फाइल में परिभाषित, का उपयोग अपने ऑब्जेक्ट से JSON स्ट्रिंग बनाने के लिए:

var obj = {solution:'5+6+89',equations:[['5+3=8',23,23],['5+1=6',150,23],['5+3=6',230,23]]} 
var string2 = JSON.stringify(obj); 
// {"solution":"5+6+89","equations":[["5+3=8",23,23],["5+1=6",150,23],["5+3=6",230,23]]} 
JSON.parse(string2); // returns a proper object 

ध्यान दें कि स्ट्रिंग कि JSON.stringify पैदा कर रही है एक आप की कोशिश कर रहे तुलना में अलग है उपयोग करें, जो आपकी समस्या का कारण हो सकता है।

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