原生js实现日历的思路与代码
本篇文章给大家带来的内容是关于原生js实现日历的思路与代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
demo效果:
实现日历的思路:
1、利用new Date()获取今天日期
2、判断今年是平年还是闰年,确定今年每个月有多少天
3、确定今天日期所在月的第一天是星期几
4、计算出日历的行数
5、利用今天日期所在月的天数与该月第一天星期几来渲染日历表格
6、左右切换月份
源码:
html
<div class="calendar-container"> <div class="calendar-header"> <div class="left btn"><</div> <div class="year"></div> <div class="right btn">></div> </div> <div class="calendar-body"> <div class="week-row"> <div class="week box">日</div> <div class="week box">一</div> <div class="week box">二</div> <div class="week box">三</div> <div class="week box">四</div> <div class="week box">五</div> <div class="week box">六</div> </div> <div class="day-rows"> <!--日期的渲染的地方--> </div> </div> </div>
css
.calendar-container{ width: calc(31px*7 + 1px); } .calendar-header{ display: flex; justify-content: space-between; } .year{ text-align: center; line-height: 30px; } .btn{ width: 30px; height: 30px; text-align: center; line-height: 30px; cursor: pointer; } .calendar-body{ border-right: 1px solid #9e9e9e; border-bottom: 1px solid #9e9e9e; } .week-row, .day-rows, .day-row{ overflow: hidden; } .box{ float: left; width: 30px; height: 30px; border-top: 1px solid #9e9e9e; border-left: 1px solid #9e9e9e; text-align: center; line-height: 30px; } .week{ background: #00bcd4; } .day{ background: #ffeb3b; } .curday{ background: #ff5722; }
js
// 获取今天日期 let curTime = new Date(), curYear = curTime.getFullYear(), curMonth = curTime.getMonth(), curDate = curTime.getDate(); console.log(curTime, curYear, curMonth, curDate) // 判断平年还是闰年 function isLeapYear(year){ return (year%400 === 0) || ((year%4 === 0) && (year%100 !== 0)) } function render(curYear, curMonth){ document.querySelector('.year').innerHTML = `${curYear}年${curMonth + 1}月`; // 判断今年是平年还是闰年,并确定今年的每个月有多少天 let daysInMonth = [31, isLeapYear(curYear) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // 确定今天日期所在月的第一天是星期几 let firstDayInMonth = new Date(curYear, curMonth, 1), firstDayWeek = firstDayInMonth.getDay(); // 根据当前月的天数和当前月第一天星期几来确定当前月的行数 let calendarRows = Math.ceil((firstDayWeek + daysInMonth[curMonth])/7); // 将每一行的日期放入到rows数组中 let rows = []; // 外循环渲染日历的每一行 for(let i = 0; i < calendarRows; i++){ rows[i] = `<p class="day-row">`; // 内循环渲染日历的每一天 for(let j = 0; j < 7; j++){ // 内外循环构成了一个calendarRows*7的表格,为当前月的每个表格设置idx索引; // 利用idx索引与当前月第一天星期几来确定当前月的日期 let idx = i*7 + j, date = idx - firstDayWeek + 1; // 过滤掉无效日期、渲染有效日期 if(date <= 0 || date > daysInMonth[curMonth]){ rows[i] += `<p class="day box"></p>` }else if(date === curDate){ rows[i] += `<p class="day box curday">${date}</p>` }else{ rows[i] += `<p class="day box">${date}</p>` } } rows[i] += `</p>` } let dateStr = rows.join(''); document.querySelector('.day-rows').innerHTML = dateStr; } // 首次调用render函数 render(curYear, curMonth); let leftBtn = document.querySelector('.left'), rightBtn = document.querySelector('.right'); // 向左切换月份 leftBtn.addEventListener('click', function(){ curMonth--; if(curMonth < 0){ curYear -= 1; curMonth = 11; } render(curYear, curMonth); }) // 向右切换月份 rightBtn.addEventListener('click', function(){ curMonth++; if(curMonth > 11){ curYear += 1; curMonth = 0; } render(curYear, curMonth); })
小结:
1、为了实现左右切换月份,将日历日期渲染代码放入到了render
函数,方便月份切换后重新渲染;
2、确定当前月的行数时,要结合当前月的天数与当前月第一天星期几来共同确定;
3、原生js日历中比较核心的就是如何确定每一天的日期,在这儿利用了内外循环,内外循环构成了一个calendarRows*7的表格,为当前月的每个表格设置idx索引;利用idx索引与当前月第一天星期几来确定当前月的日期;记得要过滤掉无效日期!!!
相关推荐:
Atas ialah kandungan terperinci 原生js实现日历的思路与代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alat penting untuk mengatur kerja dan rutin harian anda dalam Windows 11 ialah paparan masa dan tarikh dalam bar tugas. Ciri ini biasanya terletak di sudut kanan bawah skrin dan memberikan anda akses segera kepada masa dan tarikh. Dengan mengklik kawasan ini, anda boleh memaparkan kalendar anda, menjadikannya lebih mudah untuk menyemak janji temu dan tarikh yang akan datang tanpa perlu membuka apl berasingan. Walau bagaimanapun, jika anda menggunakan berbilang monitor, anda mungkin menghadapi masalah dengan ciri ini. Khususnya, semasa jam dan tarikh muncul pada bar tugas pada semua monitor yang disambungkan, keupayaan untuk mengklik tarikh dan masa pada monitor kedua untuk memaparkan kalendar tidak tersedia. Buat masa ini, ciri ini hanya berfungsi pada paparan utama - ia tidak seperti Windows 10, di mana mengklik mana-mana

Ramai pengguna ingin menggunakan alat Kalendar Win10 untuk menyemak bilangan hari semasa, tetapi kalendar tidak memaparkan fungsi ini secara automatik, sebenarnya, kita hanya perlu menggunakan tetapan mudah untuk melihat bilangan terkumpul minggu tahun ini~paparan Kalendar Win10. minggu Tutorial tetapan digital: 1. Masukkan kalendar dalam carian di sudut kiri bawah desktop dan buka aplikasi. 2. Dalam aplikasi kalendar terbuka, klik ikon "gear" di sudut kiri bawah, dan tetapan akan muncul di sebelah kanan Kami mengklik "Tetapan Kalendar" 3. Teruskan dalam tetapan kalendar terbuka, cari "Nombor Minggu". dan kemudian tukar minggu Hanya laraskan pilihan nombor kepada "hari pertama dalam tahun". 4. Selepas melengkapkan tetapan di atas, klik "Minggu" untuk melihat statistik nombor minggu tahun ini.

Jika kalendar Outlook anda tidak boleh disegerakkan dengan Kalendar Google, Pasukan, iPhone, Android, Zum, akaun Office, dll., sila lakukan langkah berikut untuk menyelesaikan isu tersebut. Apl kalendar boleh disambungkan kepada perkhidmatan kalendar lain seperti Kalendar Google, iPhone, Android, Microsoft Office 365, dsb. Ini sangat berguna kerana ia boleh menyegerak secara automatik. Tetapi bagaimana jika OutlookCalendar gagal disegerakkan dengan kalendar pihak ketiga Kemungkinan sebabnya mungkin memilih kalendar yang salah untuk penyegerakan, kalendar tidak kelihatan, gangguan aplikasi latar belakang, aplikasi Outlook atau aplikasi kalendar yang sudah lapuk, dsb. Pembetulan awal untuk kalendar Outlook tidak menyegerak

Beberapa rakan yang menggunakan sistem win0 telah menghadapi situasi di mana kalendar win10 tidak boleh dibuka Ini hanya masalah komputer biasa Ia boleh diselesaikan dalam tetapan privasi sistem win10. Di bawah Mari kita lihat. Penyelesaian kepada masalah bahawa kalendar tidak boleh dibuka di sudut kanan bawah win10 1. Klik Mula dalam sistem win10 → klik butang senarai program di atas → cari Pinyin (Bahasa Cina) R → Kalendar 2. Apabila menggunakannya buat kali pertama , acara baharu mungkin tidak dibuka (tetikus Jika anda condong ke atas, tidak akan ada biru tua yang dipilih), anda boleh menetapkannya dalam privasi. Klik ikon tiga bar di sudut kiri atas desktop → akan ada menu tetapan di bahagian bawah 3. Klik Privasi dalam antara muka pop timbul 4. Jika anda pernah menggunakan tetapan sebelum ini, anda boleh klik pada kiri

Pejabat Pembelian yang Hilang akan dikemas kini pada pukul 11 pagi pada 28 Februari Pemain boleh pergi ke Taobao untuk mencari di Pejabat Pembelian dan memilih kategori kedai untuk dibeli Kali ini kami membawakan anda siri pesta ulang tahun MBCC dan peranti Kalendar Meja 2024 bersama-sama lihat butiran produk kali ini. Tiada Tempoh Hilang Pejabat Pembelian: Peranti siri kalendar dan hari jadi baharu! Terdapat sesuatu yang baru di Pejabat Perolehan yang Hilang! —Masa pra-jualan: 11:00 pada 28 Februari 2024 - 23:59 pada 13 Mac 2024. Alamat pembelian: Cari Taobao [Indefinite Lost Purchasing Office] dan pilih kategori [Kedai] untuk memasuki kedai untuk pembelian; pengenalan: Peranti baharu yang dikeluarkan kali ini ialah siri parti hari jadi MBCC dan peranti kalendar meja 2024 Sila klik pada imej yang panjang untuk mendapatkan butiran. Pejabat Pembelian memperkenalkan peranti baharu—pelajar MBCC

Kalendar boleh membantu pengguna merekodkan jadual anda dan juga menetapkan peringatan Walau bagaimanapun, ramai pengguna bertanya apa yang perlu dilakukan jika peringatan acara kalendar tidak muncul dalam Windows 10? Pengguna boleh menyemak status kemas kini Windows dahulu atau mengosongkan cache Windows App Store untuk melaksanakan operasi. Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna analisis masalah peringatan acara kalendar Win10 yang tidak muncul. Untuk menambah acara kalendar, klik program "Kalendar" dalam menu sistem. Klik butang kiri tetikus pada tarikh dalam kalendar. Masukkan nama acara dan masa peringatan dalam tetingkap pengeditan, dan klik butang "Simpan" untuk menambah acara. Menyelesaikan masalah peringatan acara kalendar win10 tidak muncul

Jika komputer Windows 11 anda memaparkan masa yang salah, ia boleh menyebabkan banyak masalah dan malah menghalang anda daripada menyambung ke Internet. Malah, sesetengah aplikasi enggan dibuka atau dijalankan apabila sistem memaparkan tarikh dan masa yang salah. Jadi bagaimanakah masalah ini harus diselesaikan? Mari lihat di bawah! Kaedah 1: 1. Mula-mula kita klik kanan pada ruang kosong bar tugas di bawah dan pilih Tetapan Bar Tugas 2. Cari taskbarcorneroverflow3 di sebelah kanan dalam tetapan bar tugas, kemudian cari jam atau jam di atasnya dan pilih untuk menghidupkannya. Kaedah 2: 1. Tekan pintasan papan kekunci win+r untuk memanggil run, masukkan regedit dan tekan Enter untuk mengesahkan. 2. Buka Registry Editor dan cari HKEY di dalamnya

Vue ialah rangka kerja bahagian hadapan yang sangat popular Ia menyediakan banyak alat dan fungsi, seperti pembahagian, pengikatan data, pemprosesan acara, dll., yang boleh membantu pembangun membina aplikasi Web yang cekap, fleksibel dan mudah diselenggara. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan komponen kalendar menggunakan Vue. 1. Analisis keperluan Pertama, kita perlu menganalisis keperluan komponen kalendar ini. Kalendar asas harus mempunyai fungsi berikut: memaparkan halaman kalendar bulan semasa bertukar kepada bulan sebelumnya atau bulan hadapan dengan mengklik pada hari tertentu;
