2011-12-01 23 views
18

इससे पहले कि मैं अपने बालों को फाड़ें और डीबगिंग के मामले में गलत पथ पर जाएं। क्या कोई पुष्टि कर सकता है कि यह कोड इरादे के अनुसार करेगा। अर्थात। विभिन्न पदों के लिए 5 divs चेतन:पाश के लिए जावास्क्रिप्ट में एकाधिक काउंटर

var i, j, k; 
$('#menuButton').click(function(){ 
    for (i=1; j=0; k=150; i<=5; i++; j+=30; k-=30){ 
     $('.spinner #item' + i).animate({ 
      left: '+=' + j, 
      bottom: '+=' + k 
      }, 500, function() { 
      // Animation complete. 
     }); 
    } 
}); 

जब मैं क्लिक #menuButton, कुछ नहीं होता और मैं इस त्रुटि मिलती है:

Uncaught SyntaxError: Unexpected token ; on the 'for()' line...

+2

ए लूप के लिए केवल तीन अभिव्यक्तियां होती हैं। आप शायद चर, असाइनमेंट के बीच '' चाहते हैं। ';' प्रारंभिक असाइनमेंट, हालत, और प्रत्येक पुनरावृत्ति के बाद चलाने के लिए अभिव्यक्ति को अलग करने के लिए हैं। – pimvdb

+0

वृद्धि के बजाय तीन अलग-अलग चर क्यों बढ़ते हैं और अन्य मानों के लिए इसे गुणा करते हैं? http://jsfiddle.net/jasper/7fkx7/2/ – Jasper

+0

@ जैस्पर मुझे यह बहुत पसंद है लेकिन यह मेरी आवश्यकताओं के अनुरूप नहीं है, मुझे परिभाषित करने के लिए मूल्यों की आवश्यकता है ... – benhowdle89

उत्तर

34

आप कुछ अर्धविराम जहाँ आप चाहते हैं मिल गया है के लिए अल्पविराम:

for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30) { /* do work */ } 

आपके पास अपने for

के अंदर केवल तीन "कथन" होना चाहिए

कई [inits] ऐसा करने के लिए या [increments] तुम वहाँ कभी कभी magical, but oft forgotten, comma operator

12

बहुत ज्यादा अर्धविराम का उपयोग करने के

for (i=1; j=0; k=150; i<=5; i++; j+=30; k-=30){ 

होना चाहिए

for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30){ 
+1

:) बहुत बहुत धन्यवाद – benhowdle89

2

अपने कोड के gramatical गलतियां की है कि आप आपने आसानी से देखा होगा कि आपने static code analysis tools such as the lovely JSHint का उपयोग किया था।

इसके अतिरिक्त, आपको जावास्क्रिप्ट में comma operator के उपयोग को और समझना चाहिए, हमारी साइट पर a few answers on it already है।

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