どこがおかしいのかご指摘して頂ければ幸いです。
(変更前) for (let i = 1, lastWeekDay = lastDate.getDate(); i <= lastWeekDay; i++) { let cellStr, dateStr, dateTmp, weekDay; // 当月i日の日付オブジェクトを生成 dateTmp = new Date(year, month - 1, i); // i日の曜日を取得 weekDay = dateTmp.getDay(); dateStr = `${year}.${+month}.i`; // 日を取得 cellStr = dateTmp.getDate(); // 日曜日の場合は行の開始なのでtr開始タグ if (weekDay === 0) { htmlStr += '<tr>'; } if (weekDay === 0){ htmlStr += '<td class="sun">'; } else if (weekDay === 6){ htmlStr += '<td class="sat">'; } else { htmlStr += '<td>'; } htmlStr += `${cellStr}</td>`; // 土曜日の場合は行の終わりなのでtr終了タグ if (weekDay === 6) { htmlStr += '</tr>\n'; } }
(変更後) // 1日から月末日までループ for (let i = 1, lastWeekDay = lastDate.getDate(); i <= lastWeekDay; i++) { let cellStr, dateStr, dateTmp, weekDay, m; // 当月m日の日付オブジェクトを生成 m = 1; dateTmp = new Date(year, month - 1, m); // i日の曜日を取得 weekDay = dateTmp.getDay(); dateStr = `${year}.${+month}.m`; // 日を取得 cellStr = dateTmp.getDate(); // 日曜日の場合は行の開始なのでtr開始タグ if (weekDay === 0) { htmlStr += '<tr>'; } if (weekDay === 0){ htmlStr += '<td class="sun">'; } else if (weekDay === 6){ htmlStr += '<td class="sat">'; } else { htmlStr += '<td>'; } htmlStr += `${cellStr}</td>`; // 土曜日の場合は行の終わりなのでtr終了タグ if (weekDay === 6) { htmlStr += '</tr>\n'; } ++m; }