नमस्ते मैं लेखक xMark द्वारा इस कैलेंडर उदाहरण कोड से जावास्क्रिप्ट सीखने की कोशिश कर रहा हूं। लेकिन उनका उदाहरण रविवार को सप्ताह के पहले दिन के रूप में उपयोग करता है। मैं चाहता हूं कि यह सोमवार को सप्ताह के पहले दिन के रूप में दिखाए। अब तक मैं केवल हेडर लेबल बदलने में कामयाब रहा हूं लेकिन तारीखों की सही स्थिति नहीं। https://codepen.io/xmark/pen/WQaXdv

इसलिए मैं यह समझने की कोशिश कर रहा हूं कि उसके कोड में मैं तारीखों को एक कदम बाईं ओर स्थानांतरित कर सकता हूं। लेकिन मैं यह पता नहीं लगा सकता कि कोड में यह बदलाव कहां होना चाहिए।

जिस खंड में मैं ज्यादातर फंस गया हूं वह Calendar.prototype.showMonth = function(y, m) {...} में है जहां मुझे लगता है कि वह हिस्सा है जिसे बदलने की आवश्यकता है। इस फ़ंक्शन में मुझे समझ में नहीं आता कि लेखक var k = lastDay_of_LastMonth - firstDay_of_Month+1; अंतिम चर में +1 क्यों जोड़ता है?

var k = ... के बाद मैं पूरी तरह से खो गया हूं। जब भी मैं चीजों को बदलने की कोशिश करता हूं तो पूरा कैलेंडर टूट जाता है।

@नागुइब

var d7 = new Date(2018, 6, 1);
d7
"Sun Jul 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var firstDay_of_Month = new Date(2018, 6, 1).getDay();
firstDay_of_Month
0 // July 1st is on a Sunday.
 
//_________________________________________________________________
 
var d8 = new Date(2018, 7, 1);
d8
"Wed Aug 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var firstDay_of_Month = new Date(2018, 7, 1).getDay();
firstDay_of_Month
3 // August 1st is on a Wednesday.
 
//_________________________________________________________________
 
var dNaguib = new Date(2018, 6, 7);
dNaguib
"Sat Jul 07 2018" 00:00:00 GMT+0200 (Central European Summer Time)
 
var dNaguib = new Date(2018, 6, 7).getDay();
dNaguib
6 // July 7th is on a Saturday.
 
 
// Why then does this dynamic code looking for the 7th each month
// make everything in the calendar work?
var firstDay_of_Month = new Date(y, m, 7).getDay(); // Naguib


// While the original code looking for the 1st each month make
// some months break the calendar?
var firstDay_of_Month = new Date(y, m, 1).getDay(); // Original
0
piggy 25 जून 2018, 01:07

2 जवाब

सबसे बढ़िया उत्तर

मैंने आपके द्वारा अटैच किए गए कोडपेन को देखा और कोड के हर हिस्से को देखा जहां रविवार का उल्लेख किया गया है और इसे इसे बनने के लिए संशोधित किया गया है: https://codepen.io/naguibihab/pen/aKMYpB

ये हैं वो बदलाव जो मैंने किए: https://github.com/naguibihab/js- उपहार/प्रतिबद्ध/aa14d87eea68860650aee3383b458a0b00fb64a9

मैं समझाता हूँ कि मैंने प्रत्येक परिवर्तन क्यों किया, यह मुझे मेरे कॉलेज के दिनों में वापस ले जा रहा है जहाँ मुझे अपना कोड समझाना है इसलिए मेरे साथ रहें:

1:

  this.DaysOfWeek = [
    'Mon',
    'Tue',
    'Wed',
    'Thu',
    'Fri',
    'Sat',
    'Sun'
  ];

कैलेंडर में यह हेडर पंक्ति का शीर्षक है, बस टेक्स्ट है, इसमें कोई तर्क नहीं बदलता है

2: firstDayOfMonth = 6 आपके महीने का पहला दिन अब सोमवार है और रविवार नहीं है, आप समान परिणाम प्राप्त करने के लिए , firstDayOfMonth = new Date(y, m, 7).getDay() भी लिख सकते हैं लेकिन मुझे लगता है कि पहला दिन पाठक के लिए इसे थोड़ा स्पष्ट करता है क्योंकि हम हमेशा 6 वैसे भी

3: if ( dow == 1 ) { रविवार के बजाय सोमवार को एक नई पंक्ति शुरू करें

4: if ( dow == 0 ) { पंक्ति को शनिवार के बजाय रविवार को बंद करें

५: for(dow; dow < 7; dow++) { अगले महीने की "नॉन-करंट" संख्या रविवार तक जा सकती है, इसलिए हमें वहां एक अतिरिक्त पुनरावृत्ति की आवश्यकता है (पुनरावृत्तियों को बढ़ाए बिना ऐसा करने का एक बेहतर तरीका हो सकता है लेकिन मैं इसका पता लगाने के लिए बहुत आलसी हूं अभी)

यह ज्यादातर वहां पहुंचने के लिए "कुछ बदलने की कोशिश करें और देखें कि क्या होता है" की तरह की एक अवधारणा है, इसलिए मैंने जो किया वह प्रत्येक क्षेत्र में चला गया जहां मुझे संदेह है कि रविवार कोड को प्रभावित कर रहा है और यह देखने के लिए कि क्या होता है इसे बदलने की कोशिश की।

मुझे टिप्पणियों में बताएं कि क्या यह पर्याप्त समझ में नहीं आता है।

1
Naguib Ihab 3 जुलाई 2018, 05:35

निखिल तलरेजा से यह कोड देखें। यह आपको एक अच्छा विचार देना चाहिए कि कैसे कैलेंडर को प्रारंभ तिथि के रूप में सोमवार के साथ काम करना है। एइसके अलावा, मिलते-जुलते प्रश्न देखें।

अनिवार्य रूप से, वह लूप और लेबल के लिए कुछ का उपयोग करता है, जैसे कि:

cal_days_labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun'];

तथा

for (var j = 1; j <= 7; j++)

परियोजना आपके समान है जिसकी मैं कल्पना करूंगा, इसलिए उम्मीद है कि इससे मदद मिलेगी।

1
HunBurry 25 जून 2018, 01:16