・やりたいこと
10月のカレンダーを作っているのですが祝日の<td>のみ背景色を変えたいです。
どうすればできるのかお力添えいただきたいです。
js
1{ 2 const calender=document.getElementById('calenderBody'); 3 let now=new Date(); 4 let now_year=now.getFullYear(); 5 let now_month=now.getMonth(); 6 let first_date=new Date(now_year,now_month,1).getDay(); 7 let last_date=new Date(now_year,now_month+1,0).getDate(); 8 let dates=[ 9 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, 10 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 11 ].map(function(date){ 12 return date-first_date 13 }); 14 let holiday=[ 15 14,22 16 ];//10月の休日 17 for (let i = 0; i < 5; i++) { 18 const row = calender.insertRow(-1); 19 const dates_row=dates.slice(i*7,i*7+7); 20 let judgeHoliday=dates_row.concat(holiday); 21 row.innerHTML=dates_row.map(function(date){ 22 date=date<1||date>last_date ? '':date; 23 return '<td>'+date+'</td>' 24 }).join(''); 25 } 26}
1か月なのになぜ36も準備してるかとか、こんな固定で作ってて他の月はどうするのとか気になるところは多々あるのですが、このコードを書ける人が直面している問題には思えません。
どこかの記事のコピペなのでしょうか?どこまでこのコードを把握されてますか?
1〜36 の配列は、日曜始まりのために、先頭に空白セルを入れるために使用してるみたいですね。
久々にプログラミングに触れるのでおかしいところだらけで申し訳ないです、
とりあえずひと月だけつくってみようかと思ったので固定にしてます。
ほとんど記事を見ながらという感じで、理解しているところとしていないところがあります。
理解できていないのはsliceの引数がどう機能しているのかです。(7日区切りにしているのはなんとなくわかります、、)
自分はjudgeHolidayでdatesとholidayを結合して、被っている日にちがあればその日にちのtdタグに背景色をつけたいと考えています。(filterとindexOfを使うのでしょうか、?)
回答2件
あなたの回答
tips
プレビュー