ネイティブ 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索引与当前月第一天星期几来确定当前月的日期;记得要过滤掉无效日期!!!
相关推荐:
以上がネイティブ JS でカレンダーを実装するためのアイデアとコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows 11 で毎日の仕事やルーチンを整理するための重要なツールは、タスク バーの時刻と日付の表示です。この機能は通常、画面の右下隅にあり、時刻と日付に即座にアクセスできます。この領域をクリックするとカレンダーが表示され、別のアプリを開かなくても今後の予定や日付を簡単に確認できます。ただし、複数のモニターを使用している場合は、この機能で問題が発生する可能性があります。具体的には、接続されているすべてのモニターのタスクバーに時計と日付が表示されますが、2 番目のモニターで日付と時刻をクリックしてカレンダーを表示する機能は利用できません。現時点では、この機能はメイン ディスプレイでのみ機能します。Windows 10 とは異なり、任意のディスプレイをクリックすると機能します。

多くのユーザーは、Win10 カレンダー ツールを使用して現在の日数を確認したいと考えていますが、カレンダーにはこの機能が自動的に表示されません。実際には、簡単な設定を行うだけで、今年の累積週数が表示されます ~ Win10 カレンダー表示週 デジタル設定チュートリアル: 1. デスクトップの左下隅にある検索にカレンダーと入力し、アプリケーションを開きます。 2. 開いたカレンダー アプリケーションで、左下隅の「歯車」アイコンをクリックすると、右側に設定がポップアップ表示されます。「カレンダー設定」をクリックします。 3. 開いたカレンダー設定で続行し、「週番号」を見つけます。そして週を変更します。数値オプションを「年の最初の日」に調整するだけです。 4. 上記の設定が完了したら、「週」をクリックすると、今年の週番号の統計が表示されます。

カレンダーは、ユーザーがスケジュールを記録したり、リマインダーを設定したりするのに役立ちますが、多くのユーザーは、Windows 10 でカレンダー イベントのリマインダーが表示されない場合はどうすればよいかを尋ねています。ユーザーはまず Windows の更新ステータスを確認するか、Windows App Store のキャッシュをクリアして操作を実行できます。このサイトでは、Win10 カレンダーのイベントリマインダーが表示されない問題の分析をユーザーに丁寧に紹介します。カレンダーイベントを追加するには、システムメニューの「カレンダー」プログラムをクリックします。カレンダー内の日付をマウスの左ボタンでクリックします。編集画面でイベント名とリマインダー時刻を入力し、「保存」ボタンをクリックするとイベントが追加されます。 Win10のカレンダーイベントリマインダーが表示されない問題を解決する

Outlook カレンダーが Google カレンダー、Teams、iPhone、Android、Zoom、Office アカウントなどと同期できない場合は、次の手順に従って問題を解決してください。カレンダー アプリは、Google カレンダー、iPhone、Android、Microsoft Office 365 などの他のカレンダー サービスと接続でき、自動的に同期できるので非常に便利です。しかし、OutlookCalendar がサードパーティの予定表と同期できない場合はどうすればよいでしょうか? 考えられる理由としては、同期に間違った予定表を選択した、予定表が表示されない、バックグラウンド アプリケーションの干渉、古い Outlook アプリケーションまたは予定表アプリケーションなどが考えられます。 Outlook カレンダーが同期しない場合の暫定的な修正

「失われた購買オフィスは 2 月 28 日午前 11 時に更新されることが確認されています。プレイヤーは淘宝網にアクセスして購買オフィスを検索し、購入するストア カテゴリを選択できます。今回は MBCC 誕生日パーティー シリーズと 2024 卓上カレンダー周辺機器をお届けします。」ぜひ、今回は商品詳細をご覧ください。生理不順のない購入局:カレンダーと誕生日シリーズの周辺機器が新登場!遺失物調達室に新たな出来事が! - 先行販売時間: 2024年2月28日 11:00 - 2024年3月13日 23:59 購入アドレス: 淘宝網検索[予期せぬ紛失購入局] [ストア]カテゴリを選択して購入ストアに入り、周辺機器の紹介: 新しい周辺機器今回発売されるのはMBCCバースデーパーティーシリーズと2024年卓上カレンダー周辺機器です 詳細は長い画像をクリックしてください。購買オフィスが新しい周辺機器を導入 - MBCC の学生

win0 システムを使用している友人の中には、win10 カレンダーが開けないという状況に遭遇した人もいます。これは単なるコンピュータの通常の不具合です。win10 システムのプライバシー設定で解決できます。今日、編集者が詳細な解決策を提供しました。以下、見てみましょう。 win10の右下でカレンダーが開けない問題の解決策 1. win10システムで「スタート」をクリック → 上のプログラムリストボタンをクリック → ピンイン(中国語) Rを検索 → カレンダー 2. 初めて使用する場合, 新しいイベントが開かない場合があります (マウスを傾けると紺色が選択されなくなります), プライバシーに設定できます。デスクトップの左上隅にある 3 本のバーのアイコンをクリックすると、下部に設定メニューが表示されます; 3. ポップアップ インターフェイスで [プライバシー] をクリックします; 4. 以前に設定を使用したことがある場合は、左

Windows 11 コンピューターで間違った時間が表示されると、多くの問題が発生し、インターネットに接続できなくなる可能性があります。実際、システムが間違った日付と時刻を表示すると、一部のアプリケーションを開いたり実行したりすることを拒否します。では、この問題をどうやって解決すればいいのでしょうか?以下を見てみましょう!方法 1: 1. まず、下のタスク バーの空白スペースを右クリックし、[タスク バーの設定] を選択します。 2. タスク バーの設定で右側にある taskbarcorneroverflow3 を見つけて、その上にある時計または時計を見つけて、オンにすることを選択します。方法 2: 1. キーボード ショートカット win+r を押して「ファイル名を指定して実行」を呼び出し、「regedit」と入力して Enter キーを押して確認します。 2. レジストリ エディタを開き、その中で HKEY を見つけます。

Win10 カレンダーは、カレンダー機能が組み込まれた非常に使いやすいソフトウェアです。このカレンダー機能を使用すると、いつでもどこでも日付を確認できます。必要に応じて、旧暦などを設定し、今週を確認することもできます。とても便利です~ win10 カレンダーの設定方法: 1. メニューインターフェイスで「カレンダー」を検索し、インターフェイスに入ります。アカウントをバインドするよう求められた場合は、「カレンダーに移動」をクリックしてスキップします。 2. 左下隅の「歯車」ボタンをクリックすると、右側に設定インターフェイスが自動的に表示され、設定できます。 Win10 カレンダー FAQ 中国語のカレンダーを設定する場所 カレンダーをデスクトップに配置して週番号を表示する方法 カレンダーのショートカット キー カレンダーメモを携帯電話に同期する 同期できない場合の対処方法 旧暦の表示方法 カレンダーのエクスポート方法カレンダー 個人設定 設定 日曜日
