質問: 0; } else { weekdayCount++; } } return calendarData; } ``` ### 補足情報(FW/ツールのバージョンなど) Javascript HTML5 CSS
回答: ``` window.onload = function() { // 現在の年月の取得 var current = new Date(); var year = current.getFullYear(); var month = current.getMonth() + 1; // カレンダーの表示 var wrapper = document.getElementById('calendar'); add_calendar(wrapper, year, month); } function handler(e) { if(e.target.innerText === "") return; const yearmonth = document.querySelector(".calendar-header__title").innerText; document.querySelector("input").value = yearmonth + e.target.innerText + "日"; } /** * 指定した年月のカレンダーを表示する * @param {object} wrapper - カレンダーを追加する親要素 * @param {number} year - 年の指定 * @param {number} month - 月の指定 */ function add_calendar(wrapper, year, month) { // 現在カレンダーが追加されている場合は一旦削除する wrapper.textContent = null; // カレンダーに表示する内容を取得 var headData = generate_calendar_header(wrapper, year, month); var bodyData = generate_month_calendar(year, month); // カレンダーの要素を追加 wrapper.appendChild(headData); wrapper.appendChild(bodyData); document.querySelectorAll("td").forEach(function (target) { // 引数targetにはdiv要素が1つずつ渡されている target.addEventListener('click', handler); }); } ``` いちおうこう書いたものの、カスタムデータ属性などを使って、inputに設定したい値をtdにもっておいたほうがいい気がします。 (もちろん、年月を表示しているところから取ってもいいんですが) querySelectorを雑につかってるので、クラスとかタグ名とかで引かずにすむように、取りたい場所やセットしたい場所には適切なidを付与することを推奨します。