{"id":17610,"date":"2024-01-24T13:18:22","date_gmt":"2024-01-24T04:18:22","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=17610"},"modified":"2024-01-24T13:18:24","modified_gmt":"2024-01-24T04:18:24","slug":"javascirpt-%e3%82%ab%e3%83%ac%e3%83%b3%e3%83%80%e3%83%bc","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=17610","title":{"rendered":"Javascirpt \u30ab\u30ec\u30f3\u30c0\u30fc"},"content":{"rendered":"\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-html\" data-lang=\"HTML\"><code>&lt;!DOCTYPE html&gt;style.css\n&lt;html lang=&quot;ja&quot;&gt;\n&lt;head&gt;\n  &lt;meta charset=&quot;utf-8&quot;&gt;\n  &lt;title&gt;Calendar&lt;\/title&gt;\n  &lt;link rel=&quot;stylesheet&quot; href=&quot;css\/styles.css&quot;&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;table&gt;\n    &lt;thead&gt;\n      &lt;tr&gt;\n        &lt;th id=&quot;prev&quot;&gt;&laquo;&lt;\/th&gt;\n        &lt;th id=&quot;title&quot; colspan=&quot;5&quot;&gt;2020\/05&lt;\/th&gt;\n        &lt;th id=&quot;next&quot;&gt;&raquo;&lt;\/th&gt;\n      &lt;\/tr&gt;\n      &lt;tr&gt;\n        &lt;th&gt;Sun&lt;\/th&gt;\n        &lt;th&gt;Mon&lt;\/th&gt;\n        &lt;th&gt;Tue&lt;\/th&gt;\n        &lt;th&gt;Wed&lt;\/th&gt;\n        &lt;th&gt;Thu&lt;\/th&gt;\n        &lt;th&gt;Fri&lt;\/th&gt;\n        &lt;th&gt;Sat&lt;\/th&gt;\n      &lt;\/tr&gt;\n    &lt;\/thead&gt;\n    &lt;tbody&gt;\n    &lt;\/tbody&gt;\n    &lt;tfoot&gt;\n      &lt;tr&gt;\n        &lt;td id=&quot;today&quot; colspan=&quot;7&quot;&gt;Today&lt;\/td&gt;\n      &lt;\/tr&gt;\n    &lt;\/tfoot&gt;\n  &lt;\/table&gt;\n\n  &lt;script src=&quot;js\/main.js&quot;&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre><\/div>\n\n\n\n<p>style.css<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-css\" data-lang=\"CSS\"><code>body {\r\n  font-family: &#39;Courier New&#39;, monospace;\r\n  font-size: 14px;\r\n}\r\n\r\ntable {\r\n  border-collapse: collapse;\r\n  border: 2px solid #eee;\r\n}\r\n\r\nthead,\r\ntfoot {\r\n  background: #eee;\r\n}\r\n\r\nth,\r\ntd {\r\n  padding: 8px;\r\n  text-align: center;\r\n}\r\n\r\ntbody td:first-child {\r\n  color: red;\r\n}\r\n\r\ntbody td:last-child {\r\n  color: blue;\r\n}\r\n\r\ntfoot {\r\n  font-weight: bold;\r\n}\r\n\r\ntd.disabled {\r\n  opacity: 0.3;\r\n}\r\n\r\ntd.today {\r\n  font-weight: bold;\r\n}\r\n\r\n#prev,\r\n#next,\r\n#today {\r\n  cursor: pointer;\r\n  user-select: none;\r\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-js\" data-lang=\"JavaScript\"><code>&#39;use strict&#39;;\r\n\r\nconsole.clear();\r\n\r\n{\r\n  const today = new Date();\r\n  let year = today.getFullYear();\r\n  let month = today.getMonth();\r\n\r\n  function getCalendarHead() {\r\n    const dates = [];\r\n    const d = new Date(year, month, 0).getDate();\r\n    const n = new Date(year, month, 1).getDay();\r\n\r\n    for (let i = 0; i &lt; n; i++) {\r\n      \/\/ 30\r\n      \/\/ 29, 30\r\n      \/\/ 28, 29, 30\r\n      dates.unshift({\r\n        date: d - i,\r\n        isToday: false,\r\n        isDisabled: true,\r\n      });\r\n    }\r\n\r\n    return dates;\r\n  }\r\n\r\n  function getCalendarBody() {\r\n    const dates = []; \/\/ date: \u65e5\u4ed8, day: \u66dc\u65e5\r\n    const lastDate = new Date(year, month + 1, 0).getDate();\r\n\r\n    for (let i = 1; i &lt;= lastDate; i++) {\r\n      dates.push({\r\n        date: i,\r\n        isToday: false,\r\n        isDisabled: false,\r\n      });\r\n    }\r\n\r\n    if (year === today.getFullYear() &amp;&amp; month === today.getMonth()) {\r\n      dates[today.getDate() - 1].isToday = true;\r\n    }\r\n\r\n    return dates;\r\n  }\r\n\r\n  function getCalendarTail() {\r\n    const dates = [];\r\n    const lastDay = new Date(year, month + 1, 0).getDay();\r\n\r\n    for (let i = 1; i &lt; 7 - lastDay; i++) {\r\n      dates.push({\r\n        date: i,\r\n        isToday: false,\r\n        isDisabled: true,\r\n      });\r\n    }\r\n\r\n    return dates;\r\n  }\r\n\r\n  function clearCalendar() {\r\n    const tbody = document.querySelector(&#39;tbody&#39;);\r\n\r\n    while (tbody.firstChild) {\r\n      tbody.removeChild(tbody.firstChild);\r\n    }\r\n  }\r\n\r\n  function renderTitle() {\r\n    const title = `${year}\/${String(month + 1).padStart(2, &#39;0&#39;)}`;\r\n    document.getElementById(&#39;title&#39;).textContent = title;\r\n  }\r\n\r\n  function renderWeeks() {\r\n    const dates = [\r\n      ...getCalendarHead(),\r\n      ...getCalendarBody(),\r\n      ...getCalendarTail(),\r\n    ];\r\n    const weeks = [];\r\n    const weeksCount = dates.length \/ 7;\r\n\r\n    for (let i = 0; i &lt; weeksCount; i++) {\r\n      weeks.push(dates.splice(0, 7));\r\n    }\r\n\r\n    weeks.forEach(week =&gt; {\r\n      const tr = document.createElement(&#39;tr&#39;);\r\n      week.forEach(date =&gt; {\r\n        const td = document.createElement(&#39;td&#39;);\r\n\r\n        td.textContent = date.date;\r\n        if (date.isToday) {\r\n          td.classList.add(&#39;today&#39;);\r\n        }\r\n        if (date.isDisabled) {\r\n          td.classList.add(&#39;disabled&#39;);\r\n        }\r\n\r\n        tr.appendChild(td);\r\n      });\r\n      document.querySelector(&#39;tbody&#39;).appendChild(tr);\r\n    });\r\n  }\r\n\r\n  function createCalendar() {\r\n    clearCalendar();\r\n    renderTitle();\r\n    renderWeeks();\r\n  }\r\n\r\n  document.getElementById(&#39;prev&#39;).addEventListener(&#39;click&#39;, () =&gt; {\r\n    month--;\r\n    if (month &lt; 0) {\r\n      year--;\r\n      month = 11;\r\n    }\r\n\r\n    createCalendar();\r\n  });\r\n\r\n  document.getElementById(&#39;next&#39;).addEventListener(&#39;click&#39;, () =&gt; {\r\n    month++;\r\n    if (month &gt; 11) {\r\n      year++;\r\n      month = 0;\r\n    }\r\n\r\n    createCalendar();\r\n  });\r\n\r\n  document.getElementById(&#39;today&#39;).addEventListener(&#39;click&#39;, () =&gt; {\r\n    year = today.getFullYear();\r\n    month = today.getMonth();\r\n\r\n    createCalendar();\r\n  });\r\n\r\n  createCalendar();\r\n}<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>style.css<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[78,4],"tags":[41,3],"class_list":["post-17610","post","type-post","status-publish","format-standard","hentry","category-javascript","category-programming","tag-javascript","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/17610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17610"}],"version-history":[{"count":1,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/17610\/revisions"}],"predecessor-version":[{"id":17611,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/17610\/revisions\/17611"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17610"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}