<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaScript アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/category/programming/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/category/programming/javascript/</link>
	<description>ちょっとしたことを調べているよ</description>
	<lastBuildDate>Fri, 15 Nov 2024 08:56:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>JavaScript アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/category/programming/javascript/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【簡単】DockerでPHPとMySQLの環境構築【コンテナ仮想化】</title>
		<link>https://nyanblog2222.com/programming/cmd/5184/</link>
					<comments>https://nyanblog2222.com/programming/cmd/5184/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 26 Mar 2023 09:28:33 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[コマンドプロンプト]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[環境構築]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5184</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />目次 DockerとはDockerをインストールファイル構成ファイル作成docker-compose.yml ファイルコンテナ[php]：Dockerfile コンテナ[mysql]：Dockerfile index.p [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/cmd/5184/">【簡単】DockerでPHPとMySQLの環境構築【コンテナ仮想化】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_2-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Dockerとは</a></li><li><a href="#toc2" tabindex="0">Dockerをインストール</a></li><li><a href="#toc3" tabindex="0">ファイル構成</a></li><li><a href="#toc4" tabindex="0">ファイル作成</a><ol><li><a href="#toc5" tabindex="0">docker-compose.yml ファイル</a></li><li><a href="#toc6" tabindex="0">コンテナ[php]：Dockerfile </a></li><li><a href="#toc7" tabindex="0">コンテナ[mysql]：Dockerfile </a></li><li><a href="#toc8" tabindex="0">index.php ファイル</a></li></ol></li><li><a href="#toc9" tabindex="0">動作確認</a><ol><li><a href="#toc10" tabindex="0">localhostに接続</a></li><li><a href="#toc11" tabindex="0">コンテナ内に入ってphp実行確認</a></li><li><a href="#toc12" tabindex="0">MySQL接続、SQL実行</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Dockerとは</span></h2>



<p>Dockerは<span class="bold-red">コンテナ仮想化</span>を使ったアプリケーションを開発・配置・実行するためのオープンプラットフォームです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p>簡単に利点をいうと、<br>・環境構築ファイルを共有することで<span class="marker-under">簡単に同じ環境を提供可能</span><br>・<span class="marker-under">環境の流用や変更が簡単</span><br>・<span class="marker-under">軽量で高速</span>に起動、停止が可能</p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>詳しいことが知りたい方は色々調べてみてください♪<br>（気が向けば別記事で書きます）</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">Dockerをインストール</span></h2>



<p>Dockerをインストールします。<br>以下のリンクからダウンロードしてインストールを行ってください。</p>



<p><a rel="noopener" href="https://www.docker.com/get-started/" target="_blank">Dockerのダウンロードはこちらから</a></p>



<p>コマンドプロンプトやVSCodeのターミナルなどで<br><span class="marker-under">バージョン確認のコマンドを実行</span>し、インストールされていることを確認できます。</p>



<p>■コマンド &#8211; バージョン確認<br><code>docker -v</code></p>



<p>■コマンド結果<br>このようにバージョンが出てきたらOKです。</p>



<pre class="wp-block-code plaintext"><code>&gt; docker -v 
Docker version 20.10.13, build a224086</code></pre>



<h2 class="wp-block-heading"><span id="toc3">ファイル構成</span></h2>



<p>今回は以下のファイル構成で環境構築しています。<br>慣れたら自分の好きなファイル構成にしていただいて構いません。</p>



<p>□：ディレクトリ名<br>・：ファイル名</p>



<pre class="wp-block-code plaintext"><code>□app
├□docker
││
│├□mysql
││├□data
││└・Dockerfile
││
│└□php
│  └・Dockerfile
│
├□html
│└・index.php
│
└・docker-compose.yml</code></pre>



<p>※1 mysql\dataディレクトリの中身は空で作成してください。</p>



<h2 class="wp-block-heading"><span id="toc4">ファイル作成</span></h2>



<p>各ファイルの内容を載せています。</p>



<h3 class="wp-block-heading"><span id="toc5">docker-compose.yml ファイル</span></h3>



<pre class="wp-block-code plaintext"><code>version: '3'
services:
  php:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
    volumes:
      - ./src:/var/www/html
    ports:
      - 8080:80
    depends_on:
      - db

  db:
    build:
      context: ./docker/mysql
      dockerfile: Dockerfile
    volumes:
      - ./docker/mysql/data:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_DATABASE=app
      - MYSQL_USER=user
      - MYSQL_PASSWORD=root
</code></pre>



<p>ぱっと見分かる箇所は説明抜いてます。</p>



<p>volumes:<br>　右側：ローカル上のディレクトリパス（docker-compose.ymlからの相対パス）<br>　左側：永続化したいサーバーフォルダ</p>



<p>build:<br>　context：build実行パス<br>　dockerfile：Dockerファイル名</p>



<p>depends_on:<br>　db：dbコンテナを先に起動</p>



<h3 class="wp-block-heading"><span id="toc6">コンテナ[php]：Dockerfile </span></h3>



<pre class="wp-block-code plaintext"><code>FROM php:8.0-apache

RUN apt-get update &amp;&amp; apt-get install -y libonig-dev &amp;&amp; \
    docker-php-ext-install pdo_mysql mysqli
</code></pre>



<h3 class="wp-block-heading"><span id="toc7">コンテナ[mysql]：Dockerfile </span></h3>



<pre class="wp-block-code plaintext"><code>FROM mysql:8.0.20</code></pre>



<h3 class="wp-block-heading"><span id="toc8">index.php ファイル</span></h3>



<pre class="wp-block-code php"><code>&lt;!DOCTYPE html&gt;
&lt;html lang="ja"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;環境構築&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;p&gt;&lt;?php print ("Hello World!");?&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>



<p>localhostに接続して表示する内容を記載しています。</p>



<h2 class="wp-block-heading"><span id="toc9">動作確認</span></h2>



<h3 class="wp-block-heading"><span id="toc10">localhostに接続</span></h3>



<p>■コマンド &#8211; コンテナ起動<br>（-d）はバックグラウンドで実行</p>



<p><code>docker compose up -d</code></p>



<p>■ローカル環境にアクセス<br><code>http://localhost:8080</code></p>



<p><span class="marker-under">「Hello World!」</span>と画面に表示</p>



<figure class="wp-block-image size-full"><img decoding="async" width="232" height="137" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230325.png" alt="" class="wp-image-5248"/><figcaption class="wp-element-caption"><code>http://localhost:8080</code>に接続</figcaption></figure>



<p>■コンテナ名を変更したとき<br>変更前のコンテナが残っているので、一度削除しておく<br>※ 削除せずにコンテナ起動すると警告が出る</p>



<p><code>docker compose down --remove-orphans</code></p>



<h3 class="wp-block-heading"><span id="toc11">コンテナ内に入ってphp実行確認</span></h3>



<p>phpコンテナに入ってphpファイルを実行確認する場合</p>



<p>■phpコンテナに入る<br><code>docker compose exec php bash</code></p>



<p>■phpファイル実行<br><code>php index.php</code></p>



<p>ファイルを実行します。<br>[index.php]ファイルの中身を<br>[echo Hello World!]だけにした方が分かりやすいかもしれません。</p>



<p>■bash終了<br><code>exit</code></p>



<h3 class="wp-block-heading"><span id="toc12">MySQL接続、SQL実行</span></h3>



<p>■MySQLコンテナでMySQL接続<br><code>docker compose exec db mysql -u root -ppass</code></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p><span class="marker-under">db[コンテナ名]<br>pass[MYSQL_ROOT_PASSWORD]</span><br>は[docker-compose.yml]で設定した値です。</p>
</div></div>



<pre class="wp-block-code php"><code>&gt; docker compose exec db mysql -u root -ppass
Welcome to the MySQL monitor.  Commands end with ; or \g.
・・・
mysql&gt;</code></pre>



<p>上記のように<br><code>mysql&gt;</code>とSQLが入力できる状態であればOKです。</p>



<p><code>SHOW DATABASES;</code><br>などSQL文を実行して試してみてください。</p>



<p>これで環境構築は完了です。</p>



<p>これから色々試してみる予定なので、<br>phpのiniファイルを追加したりcnfファイルを追加した<br>よかったら参考にしてみてください。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>いやぁ…。色々はまりました。<br>はまった点を記載すべきなのですが、開発環境も異なるため解決方法も異なる可能性が高く一つ一つネットで調べるのが速いと思います。</p>
</div></div>
<p>投稿 <a href="https://nyanblog2222.com/programming/cmd/5184/">【簡単】DockerでPHPとMySQLの環境構築【コンテナ仮想化】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/cmd/5184/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Visual Studio Codeのインストールや日本語化設定</title>
		<link>https://nyanblog2222.com/programming/javascript/5187/</link>
					<comments>https://nyanblog2222.com/programming/javascript/5187/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 15:12:41 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[VSCode]]></category>
		<category><![CDATA[環境構築]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5187</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />本記事ではVisual Studio Codeの環境構築を行います。 目次 Visual Studio Code（VSCode）とはVisual Studio CodeのインストールVisual Studio Codeに [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/5187/">Visual Studio Codeのインストールや日本語化設定</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>本記事ではVisual Studio Codeの環境構築を行います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Visual Studio Code（VSCode）とは</a></li><li><a href="#toc2" tabindex="0">Visual Studio Codeのインストール</a></li><li><a href="#toc3" tabindex="0">Visual Studio Codeに拡張機能をインストール</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio Code（VSCode）とは</span></h2>



<p><span class="marker-under">Visual Studio Code</span>はMicrosoftが開発している<br>Windows、Linux、macOS、webで<span class="bold-red">無料で提供</span>されているソースコードエディタです。</p>



<p>調べるときに良く<span class="marker-under">VSCode</span>とも出てきます。</p>



<p><span class="bold-red">最大の特徴</span>は<span class="marker-under">拡張機能が豊富</span>にあり、<br>・英語・中国語・<span class="marker-under">日本語表示</span><br>・各開発言語の開発効率を向上させる機能（ソースコード入力補助等）<br>様々あるため、現在最も多く利用されているエディタといわれています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>なにより<span class="marker-under">多くの機能が無料で使える</span>！<br>これに尽きます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">Visual Studio Codeのインストール</span></h2>



<p>さっそくVisual Studio Codeをインストールしていきます。<br>まずは<a rel="noopener" href="https://code.visualstudio.com/" target="_blank">Visual Studio Codeのページ</a>から<span class="bold-red">赤枠</span>をクリックし、ファイルをダウンロードします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="596" height="374" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00.png" alt="VSCode　ダウンロード" class="wp-image-459" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00.png 596w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00-300x188.png 300w" sizes="auto, (max-width: 596px) 100vw, 596px" /></figure>



<p><span class="bold-red">ダウンロードしたファイル「VSCodeUserSetup-x64-[ver名].exe」</span>をダブルクリックし<br>インストールを開始します。</p>



<p>セットアップ画面が開いたら<br><span class="bold-red">「同意する」</span>にチェックをつけて、<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4.png" alt="VSCode セットアップ" class="wp-image-464" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>インストール先を指定します。<br>特に変更する必要がなければそのまま<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0.png" alt="VSCode セットアップ" class="wp-image-465" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>スタートメニューにショートカットを作成します。<br>特にこだわりがなければ、このまま<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2.png" alt="VSCode セットアップ" class="wp-image-466" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>ここでは、インストール時の追加要素を選択することができます。</p>



<p>今回は変更していませんが、おすすめは以下の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p>・エクスプローラーのファイル　コンテキストメニューに[Code で開く]アクションを追加する<br>・エクスプローラーのディレクトリ　コンテキストメニューに[Code で開く]アクションを追加する<br>・<span class="bold-red">PATHへの追加</span></p>
</div>



<p>他のサイトでよくインストール作業の内容に関して、環境変数に設定する内容が記載されていますが、ここで<span class="bold-red">PATHへの追加</span>にチェックを入れておくと自分で作業する必要が無くなります。<br>そのため、チェックをつけた状態で<span class="bold-red">「次へ」</span>をクリックしましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1.png" alt="VSCode セットアップ" class="wp-image-473" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>インストールの確認前画面です。<br>内容に問題なければ<span class="bold-red">「インストール」</span>をクリックしてください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77.png" alt="VSCode セットアップ" class="wp-image-469" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>インストールが完了したら<span class="bold-red">「完了」</span>をクリックし、セットアップ画面を閉じてください。<br>これでVisual Studio Codeのインストールが完了です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1.png" alt="VSCode セットアップ" class="wp-image-471" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<h2 class="wp-block-heading"><span id="toc3">Visual Studio Codeに拡張機能をインストール</span></h2>



<p>拡張機能でインストールする方法を紹介します。<br>まず使うであろう<span class="bold-red">「日本語化」</span>の拡張機能をインストールします。</p>



<p>Visual Studio Codeを開きます。</p>



<p>左側のアクティビティバーにある、<span class="bold-red">赤枠「拡張機能」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="619" height="464" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min.png" alt="Visual Studio Code" class="wp-image-475" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min.png 619w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min-300x225.png 300w" sizes="auto, (max-width: 619px) 100vw, 619px" /></figure>



<p>「Marketplace」に<span class="bold-red">「Japanese」</span>と入力してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="620" height="183" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5.png" alt="" class="wp-image-485" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5.png 620w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5-300x89.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>



<p><span class="bold-red">「Japanese Language Pack for Visual Studio Code」</span><br>のインストールを行ってください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="620" height="177" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4.png" alt="" class="wp-image-484" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4.png 620w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4-300x86.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>



<p>locale.jsonで日本語に設定します。<br><span class="bold-red">「Ctrl」+「Shift」+「P」</span>でコマンドパレットを起動します。</p>



<p>「configure」と入力すると予測変換が出てくるので<br><span class="bold-red">「Configure Display Language」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="617" height="179" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min.png" alt="Visual Studio Code　日本語" class="wp-image-483" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min.png 617w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min-300x87.png 300w" sizes="auto, (max-width: 617px) 100vw, 617px" /></figure>



<p><span class="bold-red">「ja」</span>(japanese)をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="617" height="180" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min.png" alt="Visual Studio Code　日本語" class="wp-image-486" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min.png 617w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min-300x88.png 300w" sizes="auto, (max-width: 617px) 100vw, 617px" /></figure>



<p>再起動するか確認するメッセージボックスが出ますので、<span class="bold-red">「Restart」</span>をクリックしてください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="567" height="205" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00.png" alt="Visual Studio Code　再起動" class="wp-image-488" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00.png 567w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00-300x108.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></figure>



<p>これで日本語化の完了です。</p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/5187/">Visual Studio Codeのインストールや日本語化設定</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/5187/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでTODOリスト作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/5090/</link>
					<comments>https://nyanblog2222.com/programming/5090/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 09 Mar 2023 15:31:35 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[TODOリスト]]></category>
		<category><![CDATA[サンプル]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5090</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x157.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-768x401.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />JavaScriptでTODOリストを作成しました。 シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪ 目次 はじめに実装内容（フロー）HTMLCSSJavaSc [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5090/">【初心者】JavaScriptでTODOリスト作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x157.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-768x401.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />
<p>JavaScriptでTODOリストを作成しました。</p>



<p>シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">実装内容（フロー）</a></li><li><a href="#toc3" tabindex="0">HTML</a></li><li><a href="#toc4" tabindex="0">CSS</a></li><li><a href="#toc5" tabindex="0">JavaScript</a><ol><li><a href="#toc6" tabindex="0">コード</a></li><li><a href="#toc7" tabindex="0">解説</a><ol><li><a href="#toc8" tabindex="0">・グローバル変数の定義・ページ読み込み後、変数にHTML要素を設定</a></li><li><a href="#toc9" tabindex="0">・タスク追加</a><ol><li><a href="#toc10" tabindex="0">・完了ボタンクリック</a></li><li><a href="#toc11" tabindex="0">・削除ボタンクリック</a></li></ol></li><li><a href="#toc12" tabindex="0">・チェックしたタスクを一括削除：deleteTask()</a></li><li><a href="#toc13" tabindex="0">・タスク内にあるボタンを作成：createTaskButton(class_name, name)</a></li></ol></li></ol></li><li><a href="#toc14" tabindex="0">デモ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずはTODOリストの機能を考えます。<br>今回は以下の機能を持たせて実装しました。</p>



<p>簡単な機能しか実装していませんが、好みに応じてカスタマイズしてみてください。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list">
<li>タスクを追加、完了、削除</li>



<li>タスクをまとめて削除する</li>
</ul>
</div>



<p>作成のイメージ図がこちらです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.png" alt="" class="wp-image-5101" width="687" height="470" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.png 687w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x205.png 300w" sizes="auto, (max-width: 687px) 100vw, 687px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">実装内容（フロー）</span></h2>



<p>次に箇条書きで処理フローを記述します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list">
<li>変数を設定</li>



<li>タスク追加ボタン押下時：
<ol class="wp-block-list">
<li>タスク名の入力値チェック</li>



<li>タスクに必要な要素を追加する</li>
</ol>
</li>



<li>チェックしたタスクを一括削除ボタン押下時：
<ol class="wp-block-list">
<li>チェックしたタスクをを削除する</li>
</ol>
</li>



<li>完了ボタン押下時： 
<ol class="wp-block-list">
<li>ボタンを押下したタスクを完了</li>
</ol>
</li>



<li>削除ボタン押下時： 
<ol class="wp-block-list">
<li>ボタンを押下したタスクを削除</li>
</ol>
</li>
</ol>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>シンプルな機能だけ持たせています。<br>改善点は色々思い当たりますが、完了状態→タスク未完了状態に戻したりがありますね。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">HTML</span></h2>



<p>まずはHTMLを作成していきます。<br>作成しているのは、大きく以下の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list">
<li>タイトル（TODOリスト）</li>



<li>タスク名登録・タスク複数削除</li>



<li>タスク一覧（完了・削除ボタン）</li>
</ol>
</div>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;h1 id="header"&gt;TODOリスト&lt;/h1&gt;
    &lt;div id="input-wrap"&gt;
      &lt;input id="task-name" type="text" placeholder="タスク名を入力してください" /&gt;
      &lt;button onclick="addTask()"&gt;タスクを追加&lt;/button&gt;
      &lt;button class="deleteTask-button" onclick="deleteTask()"&gt;チェックしたタスクを削除&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id="main-wrap"&gt;
      &lt;form name="task_form"&gt;
        &lt;ul id="todo-list"&gt;&lt;/ul&gt;
      &lt;/form&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<p>「タスクを追加」ボタンにクリックイベント&#8221;<span class="marker-under">addTask()</span>&#8220;<br>「チェックしたタスクを削除」ボタンにクリックイベント&#8221;<span class="marker-under">deleteTask()</span>&#8220;</p>



<p>を設定しています。</p>



<h2 class="wp-block-heading"><span id="toc4">CSS</span></h2>



<p>次にCSSでスタイルを決定します。<br>この辺りは好きなようにカスタマイズをしていただいて良いと思います！<br>※ 先にreset.cssを読み込んでからスタイルを設定していますので、注意してください。</p>



<p>特に記載するところはありませんが、<br>61行目「line-through」、87行目「disabled」はJavaScriptで「完了」ボタン押下時のイベントで使用するため、設定してください。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

/*全体*/
.wrapper{
  max-width: 600px;
  margin: 0 auto;
  color: #666;
}
#header {
  text-align: center;
  font-size: 24px;
  width: 100%;
  margin: 1.5rem 0;
}
#main-wrap {
  margin-bottom: 1.5rem;
}

/* 入力 */
#input-wrap {
  margin: 0 auto;
  width: 80%;
}
#input-wrap input{
  width: 40%;
  height: 24px;
  margin-right: 1rem;
}

/* リスト */
#main-wrap {
  text-align: center;
  margin: 0 auto;
  width: 70%;
  min-height: 120px;
  border: 1px solid #aaa;
  border-radius: 4px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  padding: 0.8rem 2rem;
}

#main-wrap ul {
  padding-inline-start: 0
}

#main-wrap li {
  text-align: left;
  list-style-type: none;
  border-bottom: 1px dashed #aaa;
  padding: 0.8rem 0;
  display: flex;
  line-height: 32px;
}

#main-wrap p {
  width: 60%;
}
#main-wrap p.line-through {
  text-decoration: line-through;
}

/*ボタン*/
button{
  height: 32px;

  cursor: pointer;
  background: #B78D4A;
  color: #fff;
  border: 1px solid #B78D4A;
  border-radius: 4px;
  font-size: 1rem;
  padding: 0.2rem 1.5rem;
  margin-bottom: 0.5rem;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
}

button:hover{
  background-color: #D4BB92;
  border-color: #D4BB92;
}
button.disabled {
  background-color: #D4BB92;
  border-color: #D4BB92;
  cursor: not-allowed;
  pointer-events: none;
}

button.deleteTask-button {
  margin-bottom: 1.5rem;
}

.end-button, .delete-button {
  margin-bottom: 0;
  padding: 0.2rem 1rem;
}

.end-button {
  margin-right: 0.4rem;
}

</code></pre>



<h2 class="wp-block-heading"><span id="toc5">JavaScript</span></h2>



<p>JavaScriptのコードと解説をしていきます。</p>



<h3 class="wp-block-heading"><span id="toc6">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。<br>コピペも可能です！</p>



<pre class="wp-block-code javascript"><code>var todoList;
window.onload = function () {
  todoList = document.getElementById('todo-list');
}

// タスク追加
function addTask() {
  var taskName = document.getElementById('task-name');

  // タスク名の入力がなければ処理を終了
  if(taskName.value.Trim() == "") return;

  // liに要素を追加
  var li = document.createElement('li');

  // liにinputを追加
  var input = document.createElement('input');
  input.setAttribute('type', 'checkbox');
  input.setAttribute('name', 'task');
  li.appendChild(input);

  // liにpを追加
  var p = document.createElement('p');
  p.innerHTML = taskName.value;
  li.appendChild(p);

  // liにbuttonを追加
  var endButton = createTaskButton('end-button', '完了');
  li.appendChild(endButton);

  // liにbuttonを追加
  var deleteButton = createTaskButton('delete-button', '削除');
  li.appendChild(deleteButton);

  // ulにliを追加
  todoList.appendChild(li);

  taskName.value = "";

  // イベント処理
  // 完了ボタンクリック
  endButton.addEventListener('click', function(e){
    e.preventDefault();
    this.setAttribute('class', 'end-button disabled');
    this.previousElementSibling.setAttribute('class', 'line-through');
  });
  // 削除ボタンクリック
  deleteButton.addEventListener('click', function(e){
    e.preventDefault();
    todoList.removeChild(this.closest('li'));
  });
}

// チェックしたタスクを一括削除
function deleteTask() {
  var inputList = document.task_form.task;
  for(var i=inputList.length-1;i&gt;=0;i--) {
    if(inputList&#91;i].checked){
      todoList.removeChild(inputList&#91;i].closest('li'));
    }
  }
}

// タスク内にあるボタンを作成
function createTaskButton(className, name) {
  var btn = document.createElement('button');
  btn.setAttribute('class', className);
  btn.innerHTML = name;
  return btn;
}</code></pre>



<h3 class="wp-block-heading"><span id="toc7">解説</span></h3>



<p>先述したコードに対して細かく解説していきます！</p>



<h4 class="wp-block-heading"><span id="toc8">・グローバル変数の定義・ページ読み込み後、変数にHTML要素を設定</span></h4>



<pre class="wp-block-code javascript"><code>var todoList;
window.onload = function () {
  todoList = document.getElementById('todo-list');
}</code></pre>



<p>ページ読み込み後に<span class="marker-under">&lt;ul&gt;のid&#8217;todo-list&#8217;を取得し、変数todoListに設定</span>しています。</p>



<h4 class="wp-block-heading"><span id="toc9">・タスク追加</span></h4>



<pre class="wp-block-code javascript"><code>function addTask() {
  var taskName = document.getElementById('task-name');

  // タスク名の入力がなければ処理を終了
  if(taskName.value.Trim() == "") return;

  // liに要素を追加
  var li = document.createElement('li');

  // liにinputを追加
  var input = document.createElement('input');
  input.setAttribute('type', 'checkbox');
  input.setAttribute('name', 'task');
  li.appendChild(input);

  // liにpを追加
  var p = document.createElement('p');
  p.innerHTML = taskName.value;
  li.appendChild(p);

  // liにbuttonを追加
  var endButton = createTaskButton('end-button', '完了');
  li.appendChild(endButton);

  // liにbuttonを追加
  var deleteButton = createTaskButton('delete-button', '削除');
  li.appendChild(deleteButton);

  // ulにliを追加
  todoList.appendChild(li);

  taskName.value = "";

  // イベント処理
  // のちほど説明のため省略
}</code></pre>



<p>「タスクを追加」ボタン押下時のイベントを実装します。</p>



<pre class="wp-block-code javascript"><code>var taskName = document.getElementById('task-name');</code></pre>



<p>タスク名を入力する<span class="marker-under">&lt;input&gt;のid&#8217;task-name&#8217;を取得し、変数taskNameに設定</span>しています。</p>



<pre class="wp-block-code javascript"><code>// タスク名の入力がなければ処理を終了
if(taskName.value.Trim() == "") return;
</code></pre>



<p>タスク名の入力値が空であれば処理を終了する。<br><span class="marker-under">Trim()は入力値の前後の空白を除きます</span>。</p>



<pre class="wp-block-code javascript"><code>// liに要素を追加
var li = document.createElement('li');

// liにinputを追加
var input = document.createElement('input');
input.setAttribute('type', 'checkbox');
input.setAttribute('name', 'task');
li.appendChild(input);

// liにpを追加
var p = document.createElement('p');
p.innerHTML = taskName.value;
li.appendChild(p);

// liにbuttonを追加
var endButton = createTaskButton('end-button', '完了');
li.appendChild(endButton);

// liにbuttonを追加
var deleteButton = createTaskButton('delete-button', '削除');
li.appendChild(deleteButton);
</code></pre>



<p>&lt;li&gt;の要素を作成します。&lt;li&gt;の中には以下の要素を作ります。</p>



<p>・チェックボックス<br>・タスク名<br>・完了ボタン<br>・削除ボタン</p>



<pre class="wp-block-code javascript"><code>// ulにliを追加
todoList.appendChild(li);
</code></pre>



<p>作成した&lt;li&gt;を&lt;ul&gt;に追加します。</p>



<pre class="wp-block-code javascript"><code>taskName.value = "";</code></pre>



<p>入力欄をリセットするため、空文字（&#8221;&#8221;）を設定します。</p>



<h5 class="wp-block-heading"><span id="toc10">・完了ボタンクリック</span></h5>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="692" height="437" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2.png" alt="" class="wp-image-5131" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2.png 692w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2-300x189.png 300w" sizes="auto, (max-width: 692px) 100vw, 692px" /></figure>



<pre class="wp-block-code javascript"><code>endButton.addEventListener('click', function(e){
  e.preventDefault();
  this.setAttribute('class', 'end-button disabled');
  this.previousElementSibling.setAttribute('class', 'line-through');
});</code></pre>



<p>各タスクの「完了」ボタンを実装します。</p>



<pre class="wp-block-code javascript"><code>e.preventDefault();</code></pre>



<p>こちらの関数はイベントのデフォルト動作をキャンセルします。</p>



<pre class="wp-block-code javascript"><code>this.setAttribute('class', 'end-button disabled');</code></pre>



<p>end_button[完了ボタン]にclass属性&#8217;end-button <span class="marker-under">disabled</span>&#8216;を設定します。<br>disabledクラスはボタンを非活性するスタイルを設定します。</p>



<p><span class="marker-under">thisはendButton</span>を指します。</p>



<pre class="wp-block-code javascript"><code>this.previousElementSibling.setAttribute('class', 'line-through');</code></pre>



<p>タスク名&lt;p&gt;に取消線のクラス<span class="marker-under">&#8216;line-through&#8217;</span>を設定します。</p>



<p><span class="marker-under">previousElementSibling</span><span class="marker-under">：</span><span class="marker-under">一つ前の要素</span>。endButton[完了ボタン]の一つ前の要素&lt;p&gt;を指します。</p>



<h5 class="wp-block-heading"><span id="toc11">・削除ボタンクリック</span></h5>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="456" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4.png" alt="" class="wp-image-5149" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4.png 690w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4-300x198.png 300w" sizes="auto, (max-width: 690px) 100vw, 690px" /></figure>



<pre class="wp-block-code javascript"><code>deleteButton.addEventListener('click', function(e){
  e.preventDefault();
  todoList.removeChild(this.closest('li'));
});</code></pre>



<p>各タスクの「削除」ボタンを実装します。<br>※ e.preventDefault();は先ほど出てきたので省略</p>



<pre class="wp-block-code javascript"><code>todo_list.removeChild(this.closest('li'));</code></pre>



<p>タスクを削除します。</p>



<p><span class="marker-under">removeChild()</span>：&lt;ul&gt;（todoList）の子要素を削除します。<br><span class="marker-under">this.closest(&#8216;li&#8217;)</span>：クリックしたボタンthis(deleteButton)の直近に存在する親要素、もしくは要素自身を返します。</p>



<h4 class="wp-block-heading"><span id="toc12">・チェックしたタスクを一括削除：deleteTask()</span></h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-1024x434.png" alt="" class="wp-image-5140" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-1024x434.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-300x127.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-768x326.png 768w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3.png 1382w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<pre class="wp-block-code javascript"><code>function deleteTask() {
  var inputList = document.task_form.task;
  for(var i=inputList.length-1;i&gt;=0;i--) {
    if(inputList&#91;i].checked){
      todoList.removeChild(inputList&#91;i].closest('li'));
    }
  }
}</code></pre>



<p><span class="marker-under">「チェックしたタスクを削除」ボタン押下時に呼ばれる関数</span>&#8220;deleteTask()&#8221;を作成します。<br>チェックしたタスクを一度に削除する処理を行います。</p>



<pre class="wp-block-code javascript"><code>var inputList = document.task_form.task;</code></pre>



<p>&lt;form name=&#8221;task_form&#8221;&gt;の中の&lt;input name=&#8221;task&#8221;&gt;を一覧で取得して変数inputListに設定しています。</p>



<p>&#8220;task_form&#8221;と&#8221;task&#8221;はname属性で指定した値です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>htmlファイルと見比べながら確認すると分かりやすいです。</p>
</div></div>



<pre class="wp-block-code javascript"><code>// ①
for(var i=inputList.length-1;i&gt;=0;i--) {
  // ②
  if(inputList&#91;i].checked){
    // ③
    todo_list.removeChild(inputList&#91;i].closest('li'));
  }
}</code></pre>



<p>チェックしたタスク&lt;li&gt;を削除していきます。</p>



<p>①for文でinputListを後ろから一つずつ&lt;input&gt;を回し<br>②if文でチェックボックスでチェックしているか確認<br>※ チェックされているときはcheckedがtrue<br>③trueであればリスト（todoList）からliを削除<br>※ removeChildは「削除ボタンクリック」で開設済み</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p><span class="marker-under">①で後ろからfor文を回している理由</span>は、回しながらliを削除しているので<br>添字が変わってしまうことにより、チェックしているタスクが全て削除されなくなるというのを防いでいます。<br>※ ★このあたりは文章だと分かりずらいので、今後時間があれば図にするかもしれません…。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc13">・タスク内にあるボタンを作成：createTaskButton(class_name, name)</span></h4>



<pre class="wp-block-code javascript"><code>function createTaskButton(className, name) {
  var btn = document.createElement('button');
  btn.setAttribute('class', className);
  btn.innerHTML = name;
  return btn;
}</code></pre>



<p><span class="marker-under">タスクの「完了」「削除」ボタンを作成する関数</span>です。</p>



<pre class="wp-block-code javascript"><code>var btn = document.createElement('button');</code></pre>



<p>&lt;botton&gt;の要素を作成します。</p>



<pre class="wp-block-code javascript"><code>btn.setAttribute('class', className);
btn.innerHTML = name;</code></pre>



<p>ボタンに属性classを設定、innerHTMLにボタンに表示する内容を設定します。</p>



<p>最後にボタン（要素）を返します。</p>



<h2 class="wp-block-heading"><span id="toc14">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/todolist1/" target="_blank">こちらがデモページ</a>になります。</p>



<p>良かったら試してみてください♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5090/">【初心者】JavaScriptでTODOリスト作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/5090/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JS】jQueryでloadが効かない場合の対処法</title>
		<link>https://nyanblog2222.com/programming/5050/</link>
					<comments>https://nyanblog2222.com/programming/5050/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Mon, 02 Jan 2023 14:21:21 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[on]]></category>
		<category><![CDATA[unload]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5050</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/01/20230102.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/01/20230102.png 800w, https://nyanblog2222.com/wp-content/uploads/2023/01/20230102-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/01/20230102-768x401.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />今更な内容にはなりますが…。 jQueryでは2から3にバージョンが上がった際、load関数が廃止されたためon関数を使用して対処するようになりました。 …が、それでも上手くできない…。となったときの備忘録です。まずは、 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5050/">【JS】jQueryでloadが効かない場合の対処法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/01/20230102.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/01/20230102.png 800w, https://nyanblog2222.com/wp-content/uploads/2023/01/20230102-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/01/20230102-768x401.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />
<p>今更な内容にはなりますが…。</p>



<p>jQueryでは2から3にバージョンが上がった際、<span class="marker-under">load関数が廃止されたためon関数を使用</span>して対処するようになりました。</p>



<p>…が、それでも上手くできない…。となったときの備忘録です。<br>まずは、load関数からon関数に書き換える方法と、他、注意事項を載せています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">on関数に書き換え</a></li><li><a href="#toc2" tabindex="0">注意事項</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">on関数に書き換え</span></h2>



<p>イベント関連の処理clickイベント同様に、各関数（load、unload、error）での書き方は使用できなくなり、on関数での記述になりました。</p>



<p>■2.Xの書き方</p>



<pre class="wp-block-code javascript"><code>$(window).load(function() {
  // ・・・処理
});

$(window).unload(function() {
  // ・・・処理
});

$(window).error(function() {
  // ・・・処理
});</code></pre>



<p>■3.Xの書き方</p>



<pre class="wp-block-code javascript"><code>$(window).on('load', function() {
  // ・・・処理
});

$(window).on('unload', function() {
  // ・・・処理
});

$(window).on('error', function() {
  // ・・・処理
});</code></pre>



<h2 class="wp-block-heading"><span id="toc2">注意事項</span></h2>



<p>注意事項ですが、<span class="marker-under-red">load処理</span>を行う際に以下のように <strong><span class="marker-under">$(function () {});</span></strong> で囲ってしまうとエラーが起こってしまうので注意してください。&nbsp;</p>



<p><strong><span class="marker-under">$(function () {});</span></strong> は $(document).ready(function() {}); と同じ処理で、ready処理はload処理とは実行するタイミングが異なるため、エラーになってしまいます。</p>



<p>■書き方</p>



<pre class="wp-block-code javascript"><code>$(function () {
  // ・・・処理1
});

$(window).on('load', function() {
  // ・・・処理2
});</code></pre>



<p>■エラー</p>



<pre class="wp-block-code javascript"><code>$(function () {
  // ・・・処理1

  $(window).on('load', function() {
    // ・・・処理2
  });
});</code></pre>



<p>★readとloadの違いの記事を書くかもしれません。</p>



<p></p>



<p></p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5050/">【JS】jQueryでloadが効かない場合の対処法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/5050/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでストップウォッチの作り方</title>
		<link>https://nyanblog2222.com/programming/4829/</link>
					<comments>https://nyanblog2222.com/programming/4829/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 09 Sep 2022 06:31:39 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4829</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はJavaScriptでストップウォッチを作成しました。シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪ 目次 はじめに実装内容（フロー）HTMLCSSJav [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4829/">【初心者】JavaScriptでストップウォッチの作り方</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はJavaScriptでストップウォッチを作成しました。<br>シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">実装内容（フロー）</a></li><li><a href="#toc3" tabindex="0">HTML</a></li><li><a href="#toc4" tabindex="0">CSS</a></li><li><a href="#toc5" tabindex="0">JavaScript</a><ol><li><a href="#toc6" tabindex="0">コード</a></li><li><a href="#toc7" tabindex="0">解説</a><ol><li><a href="#toc8" tabindex="0">・グローバル変数の定義</a></li><li><a href="#toc9" tabindex="0">・ページ読み込み後、変数にHTML要素を設定</a></li><li><a href="#toc10" tabindex="0">・スタートボタン押下時に呼ばれる関数：start()</a></li><li><a href="#toc11" tabindex="0">・ストップボタン押下時に呼ばれる関数：stop()</a></li><li><a href="#toc12" tabindex="0">・リセットボタン押下時に呼ばれる関数：reset()</a></li><li><a href="#toc13" tabindex="0">・時間を計測する関数（再帰関数）：measureTime()</a></li></ol></li></ol></li><li><a href="#toc14" tabindex="0">デモ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずはストップウォッチの機能を考えます。<br>今回は以下の機能を持たせて実装しました。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list"><li>時間を計測する</li><li>ボタン：スタート、ストップ、リセット<br>※ 各ボタンを押すと各ボタンの有効・無効を判定</li><li>一度ストップしてから再度スタートすると継続して時間を計測</li><li>リセットを押すと&#8221;00:00.000&#8243;表示となりリセットされる</li></ul>
</div>



<p>実際に作成したイメージ図がこちらです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="509" height="249" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001.png" alt="" class="wp-image-4835" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001.png 509w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001-300x147.png 300w" sizes="auto, (max-width: 509px) 100vw, 509px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">実装内容（フロー）</span></h2>



<p>次に箇条書きで処理フローを記述します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list"><li>ボタンやタイマーの各要素を変数に設定</li><li>スタートボタン押下時：<ol><li>時間を計測して表示</li><li>スタートボタンを無効</li><li>ストップ、リセットボタンを有効 </li></ol></li><li>ストップボタン押下時：<ol><li>時間計測をストップし、停止時間を保持</li><li>停止時間を保持</li><li>スタート、リセットボタンを有効</li><li>ストップボタンを無効</li></ol></li><li>リセットボタン押下時：<ol><li>時間計測をストップし、時間計測に使用する変数や表示時間を初期化</li><li>スタートボタンを有効</li><li>ストップ、リセットボタンを無効</li></ol></li></ol>
</div>



<p>この流れで実際にコーディングを進めていきます。</p>



<h2 class="wp-block-heading"><span id="toc3">HTML</span></h2>



<p>まずはHTMLを作成していきます。<br>作成しているのは、以下の2つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list"><li>計測時間の表示</li><li>スタート・ストップ・リセットボタン</li></ol>
</div>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;

    &lt;!-- 計測時間を表示 --&gt;
    &lt;div id="time"&gt;00:00.000&lt;/div&gt;
    &lt;div&gt;

      &lt;!-- スタート・ストップ・リセットボタン --&gt;
      &lt;button id="start" onclick="start()"&gt;Start&lt;/button&gt;
      &lt;button id="stop" onclick="stop()" disabled&gt;Stop&lt;/button&gt;
      &lt;button id="reset" onclick="reset()" disabled&gt;Reset&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">CSS</span></h2>



<p>次にCSSでスタイルを決定します。<br>この辺りは好きなようにカスタマイズをしていただいて良いと思います！</p>



<p>特に記載するところはありませんが、<br>強いて言えばボタンは有効時、hoverすると色変化、カーソル変化。無効時は色変化のスタイルを設定しています。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

/*全体*/
.wrapper{
    font-family: arial, sans-serif;
	max-width: 600px;
	margin: 0 auto;
	color: #666;
	text-align: center;
}

/* 時間表示 */
#time{
    font-size: 60px;
    margin: 20px 0;
}

/*ボタン*/
button {
    padding: 20px 0;
    font-size: 30px;
    display: inline-block;
    padding: .8rem 1.6rem;
    border: none;
    color: #FFF;
    background-color: #B78D4A;
    border-radius: 15px;
}
button:hover {
    cursor: pointer;
    background-color: #D4BB92;
}
button:disabled {
    cursor: default;
    background-color: #D4BB92;
}
</code></pre>



<h2 class="wp-block-heading"><span id="toc5">JavaScript</span></h2>



<p>JavaScriptのコードと解説をしていきます。</p>



<h3 class="wp-block-heading"><span id="toc6">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。<br>コピペも可能です！</p>



<pre class="wp-block-code javascript"><code>var startButton;    // startボタン
var stopButton;     // stopボタン
var resetButton;    // resetボタン
var showTime;       // 表示時間

var timer;              // setinterval, clearTimeoutで使用
var startTime;          // 開始時間
var elapsedTime = 0;    // 経過時間
var holdTime = 0;       // 一時停止用に時間を保持

window.onload = function () {
    startButton = document.getElementById("start");
    stopButton = document.getElementById("stop");
    resetButton = document.getElementById("reset");
    showTime = document.getElementById("time");
}

// スタートボタン押下時
function start(){
    // 開始時間を現在の時刻に設定
    startTime = Date.now();

    // 時間計測
    measureTime();

    startButton.disabled = true;
    stopButton.disabled = false;
    resetButton.disabled = false;
}

// ストップボタン押下時
function stop(){
    // タイマー停止
    clearInterval(timer);

    // 停止時間を保持
    holdTime += Date.now() - startTime;

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = false;
}

// リセットボタン押下時
function reset(){
    // タイマー停止
    clearInterval(timer);

    // 変数、表示を初期化
    elapsedTime = 0;
    holdTime = 0;
    showTime.textContent = "00:00.000";

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = true;
}

// 時間を計測（再帰関数）
function measureTime() {
    // タイマーを設定
    timer = setTimeout(function () {
        // 経過時間を設定し、画面へ表示
        elapsedTime = Date.now() - startTime + holdTime;
        showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);
        
        // 関数を呼び出し、時間計測を継続する
        measureTime();
    }, 10);
}</code></pre>



<h3 class="wp-block-heading"><span id="toc7">解説</span></h3>



<p>先述したコードに対して細かく解説していきます！</p>



<h4 class="wp-block-heading"><span id="toc8">・グローバル変数の定義</span></h4>



<pre class="wp-block-code javascript"><code>var startButton;    // startボタン
var stopButton;     // stopボタン
var resetButton;    // resetボタン
var showTime;       // 表示時間

var timer;              // setinterval, clearTimeoutで使用
var startTime;          // 開始時間
var elapsedTime = 0;    // 経過時間
var holdTime = 0;       // 一時停止用に時間を保持</code></pre>



<p>コメントでそれぞれ記載していますが、使用する変数を宣言します。</p>



<p>1～4行がボタン、計測時間の表示でこの後HTMLの要素を設定します。<br>5～9行が時間の計測に使用する変数です。</p>



<h4 class="wp-block-heading"><span id="toc9">・ページ読み込み後、変数にHTML要素を設定</span></h4>



<pre class="wp-block-code javascript"><code>window.onload = function () {
  startButton = document.getElementById("start");
  stopButton = document.getElementById("stop");
  resetButton = document.getElementById("reset");
  showTime = document.getElementById("time");
}</code></pre>



<p>ページ読み込み後、ボタンや計測時間の表示のidを指定して各変数にHTML要素を設定します。</p>



<h4 class="wp-block-heading"><span id="toc10">・スタートボタン押下時に呼ばれる関数：start()</span></h4>



<pre class="wp-block-code javascript"><code>// スタートボタン押下時
function start(){
    // 開始時間を現在の時刻に設定
    startTime = Date.now();

    // 時間計測
    measureTime();

    startButton.disabled = true;
    stopButton.disabled = false;
    resetButton.disabled = false;
}</code></pre>



<p>スタートボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">startTime = Date.now();</span><br>時間計測に使用する[開始時間]を変数に設定します。</p>



<p><span class="marker-under">measureTime();</span><br>次に時間計測を行う関数を呼び出します。<br>時間計測に関しては関数の説明で詳しく説明します。</p>



<p>最後にスタートボタンを無効、ストップ、リセットボタンを有効にします。</p>



<h4 class="wp-block-heading"><span id="toc11">・ストップボタン押下時に呼ばれる関数：stop()</span></h4>



<pre class="wp-block-code javascript"><code>// ストップボタン押下時
function stop(){
    // タイマー停止
    clearInterval(timer);

    // 停止時間を保持
    holdTime += Date.now() - startTime;

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = false;
}</code></pre>



<p>ストップボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">clearInterval(timer);</span><br>時間計測に使用しているタイマーを停止します。</p>



<p><span class="marker-under">holdTime += Date.now() &#8211; startTime;</span><br>一度ストップを押下して再度スタートボタンを押下した際、続きから時間を計測するため、停止時間を保持します。</p>



<p>最後にスタート、リセットボタンを有効、ストップボタンを無効にします。</p>



<h4 class="wp-block-heading"><span id="toc12">・リセットボタン押下時に呼ばれる関数：reset()</span></h4>



<pre class="wp-block-code javascript"><code>// リセットボタン押下時
function reset(){
    // タイマー停止
    clearInterval(timer);

    // 変数、表示を初期化
    elapsedTime = 0;
    holdTime = 0;
    showTime.textContent = "00:00.000";

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = true;
}</code></pre>



<p>ストップボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">clearInterval(timer);</span><br>時間計測に使用しているタイマーを停止します。</p>



<p><span class="marker-under">elapsedTime = 0;</span><br><span class="marker-under">holdTime = 0;</span><br><span class="marker-under">showTime.textContent = &#8220;00:00.000&#8221;;</span><br>時間計測に使用する変数や表示時間を初期化します。</p>



<p>最後にスタートボタンを有効、ストップ、リセットボタンを無効にします。</p>



<h4 class="wp-block-heading"><span id="toc13">・時間を計測する関数（再帰関数）：measureTime()</span></h4>



<pre class="wp-block-code javascript"><code>// 時間を計測（再帰関数）
function measureTime() {
    // タイマーを設定
    timer = setTimeout(function () {
        // 経過時間を設定し、画面へ表示
        elapsedTime = Date.now() - startTime + holdTime;
        showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);
        
        // 関数を呼び出し、時間計測を継続する
        measureTime();
    }, 10);
}</code></pre>



<p>時間を計測する関数です。</p>



<p>4～11行目まででタイマーを設定します。</p>



<p><span class="marker-under">elapsedTime = Date.now() &#8211; startTime + holdTime;</span><br>計測時間を計算します。<br>[現在の時刻] &#8211; [開始時間] + [保持している時間]で導き出されます。<br>startTimeはスタートボタン押下時、holdTimeはストップボタンを押下時に設定しています。</p>



<p><span class="marker-under">showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);</span><br>計算した計測時間を表示します。</p>



<p><span class="bold-red">toISOString()</span>：ISO形式の文字列で常にYYYY-MM-DDTHH:mm:ss.sssZ形式を返します。</p>



<p><span class="bold-red">slice(14, 23)</span>：先頭を0として14～23文字目までを取得しているので、<br>[YYYY-MM-DDTHH:<span class="marker-under-red"><span class="bold-red">mm:ss.sss</span></span>Z]の赤線（赤文字）がshowTime.textContentに渡されます。</p>



<p><span class="marker-under">measureTime();</span><br><span class="marker-under-red">処理中に自身を呼び出します</span>。<br>これでストップボタンが押されるまで時間計測が行われます。</p>



<h2 class="wp-block-heading"><span id="toc14">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/stopwatch/" target="_blank">こちらがデモページ</a>になります。</p>



<p>良かったら試してみてください♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4829/">【初心者】JavaScriptでストップウォッチの作り方</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/4829/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでおみくじの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/4764/</link>
					<comments>https://nyanblog2222.com/programming/4764/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 06 Sep 2022 14:43:10 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ramdom]]></category>
		<category><![CDATA[おみくじ]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4764</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はJavaScriptでおみくじを作成しました。三段階で作成してみましたので、初心者の方が勉強するのにおすすめですよ♪ 段階としては三段階で作成していきます。 目次 ボタンを押しておみくじを表示ソースコード解説おみく [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4764/">【初心者】JavaScriptでおみくじの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はJavaScriptでおみくじを作成しました。<br>三段階で作成してみましたので、初心者の方が勉強するのにおすすめですよ♪</p>



<p>段階としては三段階で作成していきます。</p>



<ul class="wp-block-list">
<li>ボタンを押しておみくじを表示する</li>



<li>おみくじの結果の確率を設定する</li>



<li>ボタンを押しておみくじルーレットを表示する<br>おみくじは画像で表示する</li>
</ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ボタンを押しておみくじを表示</a><ol><li><a href="#toc2" tabindex="0">ソースコード</a></li><li><a href="#toc3" tabindex="0">解説</a></li></ol></li><li><a href="#toc4" tabindex="0">おみくじの結果の確率を設定</a><ol><li><a href="#toc5" tabindex="0">ソースコード</a></li><li><a href="#toc6" tabindex="0">解説</a></li></ol></li><li><a href="#toc7" tabindex="0">ボタンを押しておみくじルーレットを表示</a><ol><li><a href="#toc8" tabindex="0">ソースコード</a><ol><li><a href="#toc9" tabindex="0">HTML</a></li><li><a href="#toc10" tabindex="0">JavaScript</a></li></ol></li><li><a href="#toc11" tabindex="0">解説</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ボタンを押しておみくじを表示</span></h2>



<p>まずは一番簡単なコードで作成していきます。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji1/" target="_blank">こちらがデモページ</a>になります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="415" height="445" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523.png" alt="" class="wp-image-4791" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523.png 415w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523-280x300.png 280w" sizes="auto, (max-width: 415px) 100vw, 415px" /></figure>



<h3 class="wp-block-heading"><span id="toc2">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<pre class="wp-block-code html"><code>&lt;script&gt;
  window.onload = function () {
    // おみくじ
    // この順番が良い順番らしい（吉と中吉が逆になることも）
    const list = &#91;"大吉","吉","中吉","小吉","末吉","凶","大凶"];

    document.getElementById("button").onclick = function () {
      var random = Math.floor(Math.random() * list.length);
      document.getElementById("result").textContent = list&#91;random];
    }
  }
&lt;/script&gt;

&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;おみくじを引く&lt;/button&gt;
    &lt;/div&gt;
    &lt;p id="result"&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h3 class="wp-block-heading"><span id="toc3">解説</span></h3>



<p><span class="marker-under">HTML</span></p>



<ul class="wp-block-list">
<li>17～19行目　ボタン：押すことでおみくじが引く</li>



<li>20行目　pタグ：おみくじの結果を表示</li>
</ul>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>5行目　おみくじの結果をリストに設定</li>



<li>7～10行目　ボタンのクリックイベント</li>



<li>8行目　random関数を利用して0～リストの数までのランダムの数を作成<br>　　　  floor関数で小数を切り捨てて整数にする</li>



<li>9行目　8行目で作成した数字を使っておみくじ結果リストにアクセスし、id=&#8221;result&#8221;に設定</li>
</ul>



<h2 class="wp-block-heading"><span id="toc4">おみくじの結果の確率を設定</span></h2>



<p>続いて、おみくじの結果の確率を設定して出やすさを変えていきます。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji2/" target="_blank">こちらがデモページ</a>になります。</p>



<h3 class="wp-block-heading"><span id="toc5">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<pre class="wp-block-code html"><code>&lt;script&gt;
  window.onload = function () {
    const list = {
      "大吉" : 10,
      "吉" : 15,
      "中吉" : 20,
      "小吉" : 25,
      "末吉" :15,
      "凶" : 10,
      "大凶" : 5,
    };

    document.getElementById("button").onclick = function () {
      var random = Math.floor(Math.random() * 100);
      var rate = 0;
      for(var data in list){
        rate += list&#91;data];
        if(random &lt;= rate){
          document.getElementById("result").textContent = data;
          return;
        }
      }
    }
  }
&lt;/script&gt;

&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;おみくじを引く&lt;/button&gt;
    &lt;/div&gt;
    &lt;p id="result"&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h3 class="wp-block-heading"><span id="toc6">解説</span></h3>



<p>HTMLは変更なしのため、解説は割愛します。</p>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>3～11行目　おみくじの結果を<span class="marker-under">連想配列</span>に設定<br>　　　 valueを数字にして確率を設定（数字が大きい方が出やすい）<br>　　　 ※ <span class="marker-under">全ての項目のvalueの和が100</span>になるように</li>



<li>13～23行目　ボタンのクリックイベント</li>



<li>14行目　random関数を利用して<span class="marker-under">0～100の数</span>までのランダムの数を作成<br>　　　　 floor関数で小数を切り捨てて整数にする</li>



<li>15～21行目　<span class="marker-under">14行目でランダムに設定した値を使い、for文で連想配列を回しながら14行目で取得した値の結果</span>をid=&#8221;result&#8221;に設定</li>
</ul>



<h2 class="wp-block-heading"><span id="toc7">ボタンを押しておみくじルーレットを表示</span></h2>



<p>最後にボタンを「START」「STOP」に変更しておみくじルーレットを作成します。<br>また、おみくじの結果は画像にしました。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji3/" target="_blank">こちらがデモページ</a>になります。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524.png" alt="" class="wp-image-4792" width="230" height="451" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524.png 306w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524-153x300.png 153w" sizes="auto, (max-width: 230px) 100vw, 230px" /><figcaption class="wp-element-caption">表示画面</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc8">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<h4 class="wp-block-heading"><span id="toc9">HTML</span></h4>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;START&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;img id="img" src="img/muji.png" alt=""&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h4 class="wp-block-heading"><span id="toc10">JavaScript</span></h4>



<pre class="wp-block-code html"><code>window.onload = function () {

  const list = {
    "daikichi":10,
    "kichi":15,
    "chuukichi":20,
    "syoukichi":25,
    "suekichi":15,
    "kyou":10,
    "daikyou":5,
  };

  var timer;
  // START・STOPボタンクリックのイベント
  document.getElementById("button").onclick = function () {
    // START
    if (this.textContent == "START") {
      // ボタンのテキストを"STOP"に変更
      this.textContent = "STOP";

      // ルーレットタイマーを設定
      timer = setInterval(function () {
        var random = Math.floor(Math.random() * Object.keys(list).length);
        document.getElementById("img").src = "img/" + Object.keys(list)&#91;random] + ".png";
      }, 10);
    // STOP
    } else {
      // ボタンのテキストを"START"に変更
      this.textContent = "START";

      var rate = 0;
      var random = Math.floor(Math.random() * 100);
      for(var data in list){
        rate += list&#91;data];
        if(random &lt;= rate){
          document.getElementById("img").src = "img/" + data + ".png";

          // ルーレットタイマーを停止
          clearInterval(timer);
          return;
        }
      }
    }
  };
};</code></pre>



<h3 class="wp-block-heading"><span id="toc11">解説</span></h3>



<p><span class="marker-under">HTML</span></p>



<ul class="wp-block-list">
<li>4～6行目　ボタン：押すことでおみくじが引く</li>



<li>7～9行目　pタグ：おみくじの結果を表示</li>
</ul>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>3～11行目　おみくじの結果を<span class="marker-under">連想配列</span>に設定</li>



<li>15～行目　ボタンのクリックイベント</li>



<li>16～24行目　<span class="marker-under">START表示時</span>にクリックしたときの処理<br>・19行目　ボタン表示を[STOP]に変更<br>・22～25行目　タイマーを設定（ルーレットを作ります）<br>・23行目　randomにランダムに値を設定（0～連想配列の数）<br>・24行目　23行目の値を使って画像を設定</li>



<li>26～43行目　<span class="marker-under">STOP表示時</span>にクリックしたときの処理<br>・29行目　ボタン表示を[START]に変更<br>・31～42行目　[おみくじの結果の確率を設定]のおみくじの設定を流用<br>・39行目　タイマー解除</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>上記で簡単に解説していますが、</p>



<p>START表示の処理は[ボタンを押しておみくじを表示]、</p>



<p>STOP表示の処理は[おみくじの結果の確率を設定]の実装を流用しています！</p>
</div></div>
<p>投稿 <a href="https://nyanblog2222.com/programming/4764/">【初心者】JavaScriptでおみくじの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/4764/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【サンプル】JavaScriptのコードまとめリンク集</title>
		<link>https://nyanblog2222.com/programming/4717/</link>
					<comments>https://nyanblog2222.com/programming/4717/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 01 Sep 2022 12:18:37 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[サンプル]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4717</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/85.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/85.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />本記事では当ブログで上げているJavaScript記事のまとめリンク集になります。 目次でカテゴリ分けをしているので、気になる内容がありましたら目次から飛んでみてください♪ 目次 文法JavaScript サンプルVue [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4717/">【サンプル】JavaScriptのコードまとめリンク集</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/85.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/85.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>本記事では当ブログで上げてい<span class="marker-under">るJavaScript記事のまとめリンク集</span>になります。</p>



<p>目次でカテゴリ分けをしているので、気になる内容がありましたら目次から飛んでみてください♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">文法</a></li><li><a href="#toc2" tabindex="0">JavaScript サンプル</a></li><li><a href="#toc3" tabindex="0">Vue.js サンプル</a></li><li><a href="#toc4" tabindex="0">Canvas</a></li><li><a href="#toc5" tabindex="0">JSON</a></li><li><a href="#toc6" tabindex="0">アニメーション サンプル</a></li><li><a href="#toc7" tabindex="0">IE対応</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">文法</span></h2>



<p>基本的な文法やJavaScriptで用意されている関数などの解説の記事です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/1378/" target="_blank">【var let const】変数、型の違い</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1132/" target="_blank">＜input type=”file”＞で読み込んだ画像を表示</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1102/" target="_blank">＜input type=”file”＞ファイルを選択するボタンの画像やスタイルを設定する方法</a></li><li><a href="https://nyanblog2222.com/programming/javascript/775/" target="_blank">【console.log】デバッグ中に値を確認</a></li><li><a href="https://nyanblog2222.com/programming/javascript/822/" target="_blank">【フォーマット文字列】console.logでデバッグ</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1627/" target="_blank">【then/resolve/reject】Promiseの使い方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/984/" target="_blank">非同期処理と処理の順番について</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1620/" target="_blank">遅延実行でイベントを発生させる方法</a></li></ul>



<h2 class="wp-block-heading"><span id="toc2">JavaScript サンプル</span></h2>



<p>JavaScriptを使用したサンプルの一覧です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/2749/" target="_blank">カレンダー作成</a></li><li><a href="https://nyanblog2222.com/programming/javascript/4496/" target="_blank">電卓の作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/4764/" target="_blank">おみくじの作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/2835/" target="_blank">祝日対応のカレンダー作成</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1194/" target="_blank">ビンゴマシンの作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1016/" target="_blank">ビンゴカードの作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1200/" target="_blank">カウントダウンタイマーの作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1382/" target="_blank">アナログ時計の作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/4829/" target="_blank">ストップウォッチの作り方</a></li></ul>



<h2 class="wp-block-heading"><span id="toc3">Vue.js サンプル</span></h2>



<p>Vueの基本からVueを使用したサンプルの一覧です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/4571/" target="_blank">vue.jsで電卓の作り方</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1638/" target="_blank">Vue.jsの基本（1）</a></li></ul>



<h2 class="wp-block-heading"><span id="toc4">Canvas</span></h2>



<p>2Dの図形を描画するのに用いられるcanvasの使い方の一覧です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/699/" target="_blank">Canvasとは</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1506/" target="_blank">Canvasで複数の画像を1つのimgタグで順番に出力</a></li></ul>



<h2 class="wp-block-heading"><span id="toc5">JSON</span></h2>



<p>さまざまなデータの集まりであるJSONの扱い方の一覧です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/1566/" target="_blank">【ajax/getJSON】JQueryでのJSON読み込み方法</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1526/" target="_blank">JSONデータの参照・追加（更新）・削除</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1514/" target="_blank">JSONとは？JS相互変換について(stringify/parse)</a></li><li><a href="https://nyanblog2222.com/programming/javascript/4739/" target="_blank">JavaScriptのオブジェクトからJSONデータに変換</a></li><li><a href="https://nyanblog2222.com/programming/javascript/4723/" target="_blank">JSONデータをJavaScriptのオブジェクトに変換</a></li></ul>



<h2 class="wp-block-heading"><span id="toc6">アニメーション サンプル</span></h2>



<p>JavaScriptでCSSやプラグインを操作した、動きのあるサンプルの一覧です。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/1630/" target="_blank">スクロール中にヘッダーを固定する方法</a></li><li><a href="https://nyanblog2222.com/programming/javascript/1233/" target="_blank">文字をカーブ状に配置するプラグイン</a></li><li><a href="https://nyanblog2222.com/programming/javascript/32/" target="_blank">コピペでできるドロップダウンメニュー</a></li><li><a href="https://nyanblog2222.com/programming/javascript/73/" target="_blank">スムーススクロールでふわっとページ移動</a></li><li><a href="https://nyanblog2222.com/programming/javascript/345/" target="_blank">水面の動きを表現したプラグインの使い方</a></li></ul>



<h2 class="wp-block-heading"><span id="toc7">IE対応</span></h2>



<p>IE対応の一覧です。<br>※ 使うことはないかもしれませんが…。</p>



<ul class="wp-block-list"><li><a href="https://nyanblog2222.com/programming/javascript/965/" target="_blank">【object-fit-images】object-fit,object-positionのIE対応</a></li></ul>



<p></p>



<p></p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4717/">【サンプル】JavaScriptのコードまとめリンク集</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/4717/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【サンプル】JavaScriptのオブジェクトからJSONデータに変換【JSON.stringify()】</title>
		<link>https://nyanblog2222.com/programming/javascript/4739/</link>
					<comments>https://nyanblog2222.com/programming/javascript/4739/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 31 Aug 2022 12:35:10 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[stringify]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4739</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/88_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />JavaScriptのオブジェクトからJSON文字列のデータに変換するには、JSON.stringify()関数を使用します。 本記事では基本的な使い方から、第2引数・第3引数の使用方法も含めてご紹介していきます！ 目次 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4739/">【サンプル】JavaScriptのオブジェクトからJSONデータに変換【JSON.stringify()】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/88_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/88_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>JavaScriptのオブジェクトからJSON文字列のデータに変換するには、<span class="marker-under">JSON.stringify()</span>関数を使用します。</p>



<p>本記事では基本的な使い方から、第2引数・第3引数の使用方法も含めてご紹介していきます！</p>



<div class="wp-block-sbd-checkpoint-block is-style-sbd-checkpoint-pink"><p class="sbd-checkpoint-title">この記事のポイント</p><div class="sbd-checkpoint-content sbd-inner-block-init"><p>・<span class="marker-under">JSON.<span class="marker-under">stringify</span>()</span>を使用してJavaScript→JSONデータのオブジェクトに変換<br>・第2・3引数は任意だが、<span class="marker-under">指定することでさまざまな設定が可能</span></div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">構文</a></li><li><a href="#toc2" tabindex="0">使い方</a><ol><li><a href="#toc3" tabindex="0">JSONの文字列データに変換</a></li><li><a href="#toc4" tabindex="0">関数、または配列を指定して置き換え処理を実行</a></li><li><a href="#toc5" tabindex="0">関数、または配列を指定して置き換え処理を実行</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">構文</span></h2>



<pre class="wp-block-code javascript"><code>JSON.stringify(value&#91;, replacer&#91;, space]])</code></pre>



<p>第1引数：JSONの文字列データに変換するオブジェクト<br>第2引数：関数か配列を指定してJSONの置き換えを行う<br>第3引数：可読性を上げるため、JSONデータの項目の前にスペース等を設定可</p>



<h2 class="wp-block-heading"><span id="toc2">使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc3">JSONの文字列データに変換</span></h3>



<p>まずは第1引数だけ指定して、JavaScriptのオブジェクトをJSONデータに変換します。<br>オブジェクトでなくとも、値だけ引数を渡してもJSONデータに変換可能です。</p>



<pre class="wp-block-code javascript"><code>// '{"a":10,"b":20,"c":30}'
console.log(JSON.stringify({a:10, b:20, c:30}));

// 1項目目と2項目目は異なる型
// '&#91;true,"true"]'
console.log(JSON.stringify(&#91;new Boolean(true), new String('true')]));

// 値だけ
// "5"
console.log(JSON.stringify(5));</code></pre>



<p>実行結果</p>



<p>以下のようにそれぞれJSONの文字列データとして出力されます。</p>



<pre class="wp-block-code plaintext"><code>'{"a":10,"b":20,"c":30}'
'&#91;true,"true"]'
"5"</code></pre>



<h3 class="wp-block-heading"><span id="toc4">関数、または配列を指定して置き換え処理を実行</span></h3>



<p>第2引数は関数か配列を指定できます。</p>



<p>・keyとvalueの引数を持つ関数を指定することで<span class="marker-under">値を置き換えしたり、除外する</span>ことができます。</p>



<p>・配列を指定すると、<span class="marker-under">配列に指定されたkeyのみ含めた</span>JSON文字列のみ値を返します。</p>



<pre class="wp-block-code javascript"><code>function replacer(key, value){
  if(typeof value ==="string"){
      return undefined;
  }
  if(key === "c"){
      return value * 2;
  }
  return value;
}

// '{"a":10,"c":60}'
console.log(JSON.stringify({a:10, b:"test", c:30}, replacer));

// '{"b":"test","c":30}'
console.log(JSON.stringify({a:10, b:"test", c:30}, &#91;"b", "c"]));</code></pre>



<p>実行結果</p>



<p>1行目では<span class="marker-under">「key:b」が除外</span>され、<span class="marker-under">「key:c」のvalueが2倍</span>になっています。<br>2行目では<span class="marker-under">「key:a」が除外</span>されていることが分かりますね！</p>



<pre class="wp-block-code plaintext"><code>'{"a":10,"c":30}'
'{"b":"test","c":30}'</code></pre>



<h3 class="wp-block-heading"><span id="toc5">関数、または配列を指定して置き換え処理を実行</span></h3>



<p>第3引数を指定することで<span class="marker-under">JSONデータを成形する際のスペースや文字を入れる</span>ことができます。<br>※ 指定することで強制的に改行が入るので改行コードは不要になります。</p>



<p>ただし、このスペースや文字列は<span class="marker-under">10文字までしか設定できない</span>ため、文字列を10文字以上設定した場合は<span class="marker-under">先頭から10文字分設定</span>されます。</p>



<pre class="wp-block-code javascript"><code>console.log(JSON.stringify({a:10, b:20, c:30},undefined,5));

// 11で設定しているが、スペースは10個までしか反映されない
console.log(JSON.stringify({a:10, b:20, c:30},undefined,11));

console.log(JSON.stringify({a:10, b:20, c:30},undefined,"\t"));

// 11文字設定しているが、10文字までしか反映されない
console.log(JSON.stringify({a:10, b:20, c:30},undefined,"12345678901"));</code></pre>



<p>実行結果</p>



<pre class="wp-block-code plaintext"><code>'{
     "a": 10,
     "b": 20,
     "c": 30
}'
'{
          "a": 10,
          "b": 20,
          "c": 30
}'
'{
	"a": 10,
	"b": 20,
	"c": 30
}'
'{
1234567890"a": 10,
1234567890"b": 20,
1234567890"c": 30
}'</code></pre>



<p></p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4739/">【サンプル】JavaScriptのオブジェクトからJSONデータに変換【JSON.stringify()】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/4739/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【サンプル】JSONデータをJavaScriptのオブジェクトに変換【JSON.parse()】</title>
		<link>https://nyanblog2222.com/programming/javascript/4723/</link>
					<comments>https://nyanblog2222.com/programming/javascript/4723/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 27 Aug 2022 13:34:41 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[parse]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4723</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/84.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/84.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />JSON文字列のデータからJavaScriptのオブジェクトに変換するには、JSON.parse()関数を使用します。 本記事では基本的な使い方から、第二引数の使用方法も含めてご紹介していきます！ 目次 構文使い方JSO [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4723/">【サンプル】JSONデータをJavaScriptのオブジェクトに変換【JSON.parse()】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/84.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/84.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/84-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>JSON文字列のデータからJavaScriptのオブジェクトに変換するには、<span class="marker-under">JSON.parse()</span>関数を使用します。</p>



<p>本記事では基本的な使い方から、第二引数の使用方法も含めてご紹介していきます！</p>



<div class="wp-block-sbd-checkpoint-block is-style-sbd-checkpoint-pink"><p class="sbd-checkpoint-title">この記事のポイント</p><div class="sbd-checkpoint-content sbd-inner-block-init"><p>・<span class="marker-under">JSON.parse()</span>を使用してJSONデータ→JavaScriptのオブジェクトに変換<br>・第2引数は任意だが、<span class="marker-under">オブジェクトを返す前に実行する処理</span>を設定が可能</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">構文</a></li><li><a href="#toc2" tabindex="0">使い方</a><ol><li><a href="#toc3" tabindex="0">JSONデータをJavaScriptのオブジェクトに変換</a></li><li><a href="#toc4" tabindex="0">JSONデータからオブジェクトを返す前に処理を実行</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">構文</span></h2>



<pre class="wp-block-code javascript"><code>JSON.parse(text&#91;, reviver])</code></pre>



<p>第1引数：JSONデータ形式の文字列<br>第2引数：値を返す前に実行する関数（コールバック関数）</p>



<p>第2引数に関数を指定することで、事前にJSONデータに処理を行った状態でオブジェクトにすることができます。</p>



<h2 class="wp-block-heading"><span id="toc2">使い方</span></h2>



<p>JSONデータは文字列（string）型なので、JavaScriptで扱いやすいようにJSON.parse()関数でObjectに変換してから使用します。</p>



<h3 class="wp-block-heading"><span id="toc3">JSONデータをJavaScriptのオブジェクトに変換</span></h3>



<p>まずは第1引数だけ指定してJavaScriptのオブジェクトに変換します。</p>



<pre class="wp-block-code javascript"><code>const data = '{"a":10, "b":20, "c":30 }';
const obj = JSON.parse(data);

// {a:10, b:20, c:30}
console.log(obj); 

// 20
console.log(obj.b);
</code></pre>



<p>実行結果</p>



<p>1行目はオブジェクト形式のデータが表示されます。</p>



<pre class="wp-block-code plaintext"><code>{a:10, b:20, c:30}
20</code></pre>



<h3 class="wp-block-heading"><span id="toc4">JSONデータからオブジェクトを返す前に処理を実行</span></h3>



<p>次に第2引数を指定します。<br>keyとvalueの引数を持つ関数を設定し、関数の戻り値が新しくvalueに設定されます。</p>



<p>ここでの例ではkey=&#8221;a&#8221;, &#8220;b&#8221;, &#8220;c&#8221;、valueは10, 20, 30になり、<br>keyが&#8221;b&#8221;の場合のみ、valueを2倍にして返す関数を設定します。</p>



<pre class="wp-block-code javascript"><code>const data = '{"a":10, "b":20, "c":30 }';
const obj = JSON.parse(data, function(key, value){
  if(key==="b"){
      return value * 2;
  }
  return value;
});

console.log(obj); </code></pre>



<p>実行結果でオブジェクトのbに40が設定されていることが確認できます。</p>



<pre class="wp-block-code plaintext"><code>{a:10, b:40, c:30}</code></pre>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4723/">【サンプル】JSONデータをJavaScriptのオブジェクトに変換【JSON.parse()】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/4723/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】簡単！vue.jsで電卓の作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/4571/</link>
					<comments>https://nyanblog2222.com/programming/javascript/4571/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 10 Mar 2022 12:40:12 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[vue.js]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[計算機]]></category>
		<category><![CDATA[電卓]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4571</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回はJavaScriptで電卓を作成しました。今回は前回作成した電卓を元にvue.jsに書き換えしてみましょう。 前回の記事はこちらから！ 目次 はじめに電卓の機能HTMLvue.jsの設定 → CDNでの設定電卓の各 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4571/">【初心者】簡単！vue.jsで電卓の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回はJavaScriptで電卓を作成しました。<br>今回は前回作成した電卓を元にvue.jsに書き換えしてみましょう。</p>



<p>前回の記事はこちらから！</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-related">

<a href="https://nyanblog2222.com/programming/javascript/4496/" title="【初心者】簡単！JavaScriptで電卓の作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者】簡単！JavaScriptで電卓の作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JSで四則演算や小数点の計算ができる簡易的な電卓を作成。持たせる機能から作り方の考え方までHTML,CSSソースやデモページ付きで解説しているので、プログラミングの勉強や参考に！デモページあり。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.03.06</div></div></div></div></a>
</div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-popular">

<a href="https://nyanblog2222.com/programming/javascript/2749/" title="【初心者向け】JavaScriptでカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptでカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカレンダーをライブラリなしで作り方を紹介。前月、次月を含めた1週間表示や日付の値を取得する方法をHTML,CSSソースやデモページ付きで解説！プログラミング初心者の方へ勉強や参考に！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.07</div></div></div></div></a>
</div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a><ol><li><a href="#toc2" tabindex="0">電卓の機能</a></li></ol></li><li><a href="#toc3" tabindex="0">HTML</a><ol><li><a href="#toc4" tabindex="0">vue.jsの設定 → CDNでの設定</a></li><li><a href="#toc5" tabindex="0">電卓の各ボタンをv-forで自動作成</a></li><li><a href="#toc6" tabindex="0">クリックイベント書き換え</a></li><li><a href="#toc7" tabindex="0">vue使用のためv-model、idの設定</a></li></ol></li><li><a href="#toc8" tabindex="0">JavaScript</a></li><li><a href="#toc9" tabindex="0">デモ</a></li><li><a href="#toc10" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずはじめに<a href="https://nyanblog2222.com/programming/javascript/4496/" target="_blank">前回でも</a>説明しましたが、電卓の機能を説明します。<br>その後、vue.jsに書き換える手順を説明します。</p>



<p>また、CSSに関しては前回の記事より変更がありませんので今回は割愛させていただきます。</p>



<h3 class="wp-block-heading"><span id="toc2">電卓の機能</span></h3>



<p>作る電卓の機能は次のとおりです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list"><li>四則演算ができる</li><li>Cキーで初期化</li><li>＝で計算した後<br>数字の場合、初期化したあと数字入力<br>演算子の場合、結果はそのまま使用</li><li>最初のキーが”0”、&#8221;.&#8221;、&#8221;+-×/&#8221;の場合、<br>あらかじめ0が入力されている前提で式に入力</li></ul>
</div>



<p>完成イメージはこちらです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="450" src="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png" alt="" class="wp-image-4515" srcset="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png 450w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-300x300.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-150x150.png 150w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-100x100.png 100w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure>



<h2 class="wp-block-heading"><span id="toc3">HTML</span></h2>



<p>HTMLコードです。</p>



<pre class="wp-block-code html"><code>&lt;head>
  &lt;meta charset="UTF-8">
  &lt;title>電卓&lt;/title>
  &lt;link rel="icon" href="https://nyanblog2222.com/wp-content/themes/blogtemplate/images/favicon.ico">
  &lt;link rel="stylesheet" href="reset.css">
  &lt;link rel="stylesheet" href="style.css">
  &lt;script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js">&lt;/script>
  &lt;script src="script.js">&lt;/script>
&lt;/head>

&lt;body>
  &lt;div id="app">
    &lt;h1 id="header">電卓&lt;/h1>
    &lt;div id="calc">
      &lt;div>
        &lt;input readonly v-model="result" type="text">&lt;button v-on:click="c_click">C&lt;/button>
      &lt;/div>
      &lt;div v-for="row in dataArrays">
        &lt;button v-for="column in row" v-on:click="btn_Click(column)">{{column}}&lt;/button>
      &lt;/div>
    &lt;/div>
  &lt;/div>
&lt;/body></code></pre>



<h3 class="wp-block-heading"><span id="toc4">vue.jsの設定 → CDNでの設定</span></h3>



<pre class="wp-block-code html"><code>&lt;head>
  &lt;meta charset="UTF-8">
  &lt;title>電卓&lt;/title>
  &lt;link rel="stylesheet" href="reset.css">
  &lt;link rel="stylesheet" href="style.css">
  &lt;script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js">&lt;/script>
  &lt;script src="script.js">&lt;/script>
&lt;/head></code></pre>



<p>今回vueを使用するため、6行目にheadタグにCDN設定を追加しました。</p>



<p>注意する点として、<span class="marker-under">他のJavaScriptファイルを読み込む前にCDN設定するように</span>してください。</p>



<p>また、<a rel="noopener" href="https://jp.vuejs.org/v2/guide/installation.html" target="_blank">vue.jsのインストールや最新環境のCDNの情報はこちらから確認してください♪</a></p>



<h3 class="wp-block-heading"><span id="toc5">電卓の各ボタンをv-forで自動作成</span></h3>



<pre class="wp-block-code html"><code>&lt;div v-for="row in dataArrays">
  &lt;button v-for="column in row" v-on:click="btn_Click(column)">{{column}}&lt;/button>
&lt;/div></code></pre>



<pre class="wp-block-code javascript"><code>// 電卓のボタン
dataArrays: &#91;
  &#91;"7", "8", "9", "÷"],
  &#91;"4", "5", "6", "×"],
  &#91;"1", "2", "3", "-"],
  &#91;"0", ".", "=", "+"],
],</code></pre>



<p>Cボタン以外は<span class="marker-under">vueで自動生成</span>させます。<br>ボタンの順番やデータはJavaScript側で記述します。</p>



<p><span class="marker-under">divタグはデータ1行単位でforを回し、buttonタグは1項目（1データ）単位で回して</span>います。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>dataArrayと完成イメージ図を見比べると分かりやすいと思います！</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">クリックイベント書き換え</span></h3>



<p>クリックイベント「onclick」を「v-on:click」に置換します。</p>



<h3 class="wp-block-heading"><span id="toc7">vue使用のためv-model、idの設定</span></h3>



<p>inputタグのidを設定していましたが、v-modelでの設定に変更。<br>divのid=&#8221;app&#8221;を設定。</p>



<h2 class="wp-block-heading"><span id="toc8">JavaScript</span></h2>



<p>こちらがJavaScriptのコードです。</p>



<p>scriptファイルを分けているので、<span class="marker-under">「window.onload」でhtmlの読み込みが終わってから実行する</span>ようにしています。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {
  new Vue({
    el: '#app',
    data: {
      result: "0",
      is_calc: false,
      dataArrays: &#91;
        &#91;"7", "8", "9", "÷"],
        &#91;"4", "5", "6", "×"],
        &#91;"1", "2", "3", "-"],
        &#91;"0", ".", "=", "+"],
      ],
      operators_list: &#91;"÷", "×", "-", "+"  ],
    },
    methods: {
      c_click: function () {
        this.result = "0";
        this.is_calc = false;
      },
      btn_Click: function (val) {
        if (this.operators_list.includes(val)) {
          this.ope_click(val);
        } else if (val === "=") {
          this.equal_click();
        } else {
          this.num_click(val);
        }
      },
      num_click: function (val) {
        if (this.is_calc) this.result = "0";
        this.is_calc = false;

        if (this.result == "0" &amp;&amp; val == "0") {
          this.result = "0";
        } else if (this.result == "0" &amp;&amp; val == ".") {
          this.result = "0.";
        } else if (this.result == "0") {
          this.result = val;
        } else {
          this.result += val;
        }
      },
      ope_click: function (val) {
        if (this.is_calc) this.is_calc = false;

        if (this.is_ope_last()) {
          this.result = this.result.slice(0, -1) + val;
        } else {
          this.result += val;
        }
      },
      equal_click: function () {
        if (this.is_ope_last()) this.result = this.result.slice(0, -1);

        var temp = new Function("return " + this.result.replaceAll("×", "*").replaceAll("÷", "/"))();
        if (temp == Infinity || Number.isNaN(temp)) {
          this.result = "Error";
        } else {
          this.result = temp;
          this.is_calc = true;
        }
      },
      is_ope_last: function () {
        return this.operators_list.includes(this.result.toString().slice(-1));
      },
    },
  });
};</code></pre>



<h2 class="wp-block-heading"><span id="toc9">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/calc_vue1/">こちらがデモページ</a>になります。<br>電卓が表示され、ボタンを押すと実際に計算ができるのでぜひ試してみてください♪</p>



<h2 class="wp-block-heading"><span id="toc10">最後に</span></h2>



<p>いかがでしたでしょうか。vue.jsも主流になっていますので使いこなしていきたいですね！</p>



<p>良ければ別のサンプルページも見てみてくださいね♪</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://nyanblog2222.com/programming/javascript/2749/" title="【初心者向け】JavaScriptでカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptでカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカレンダーをライブラリなしで作り方を紹介。前月、次月を含めた1週間表示や日付の値を取得する方法をHTML,CSSソースやデモページ付きで解説！プログラミング初心者の方へ勉強や参考に！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.07</div></div></div></div></a>
</div>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4571/">【初心者】簡単！vue.jsで電卓の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/4571/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】簡単！JavaScriptで電卓の作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/4496/</link>
					<comments>https://nyanblog2222.com/programming/4496/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 06 Mar 2022 14:50:45 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[計算機]]></category>
		<category><![CDATA[電卓]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4496</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はJavaScriptで電卓を作成しました。初心者の方が勉強しやすいシンプルな機能で作ってみました。 まずは簡単なものを完成することを目的にして、そのあとで機能を追加していくことが勉強するにはおすすめですよ♪ 別記事 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4496/">【初心者】簡単！JavaScriptで電卓の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はJavaScriptで電卓を作成しました。<br>初心者の方が勉強しやすいシンプルな機能で作ってみました。</p>



<p>まずは<span class="marker-under">簡単なものを完成することを目的</span>にして、<br>そのあとで<span class="marker-under">機能を追加していくことが勉強する</span>にはおすすめですよ♪</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>初めから難しいものを作ろうとしても時間がかかって、その内やる気がなくなるのは勿体ないですよね…。（よくある）</p>
</div></div>



<p>別記事でVue.jsを使った記述も紹介しますので、合わせて読んでみてください！</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://nyanblog2222.com/programming/javascript/4571/" title="【初心者】簡単！vue.jsで電卓の作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者】簡単！vue.jsで電卓の作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JS[JavaScript]で四則演算ができる簡易的な計算機を作成しました。プログラミング初心者の方への勉強向け記事になりますのでデモページを見ながらコード、関数を見ながら作成してみてはいかがでしょうか。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.03.10</div></div></div></div></a>
</div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-22" checked><label class="toc-title" for="toc-checkbox-22">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">HTML</a><ol><li><a href="#toc3" tabindex="0">コード</a></li><li><a href="#toc4" tabindex="0">HTML解説</a></li></ol></li><li><a href="#toc5" tabindex="0">CSS</a></li><li><a href="#toc6" tabindex="0">JavaScript</a><ol><li><a href="#toc7" tabindex="0">コード</a></li><li><a href="#toc8" tabindex="0">解説</a><ol><li><a href="#toc9" tabindex="0">・グローバル変数の定義</a></li><li><a href="#toc10" tabindex="0">・HTML読み込み後</a></li><li><a href="#toc11" tabindex="0">・Cボタンクリック</a></li><li><a href="#toc12" tabindex="0">・数字ボタンクリック</a></li><li><a href="#toc13" tabindex="0">・演算子ボタンクリック</a></li><li><a href="#toc14" tabindex="0">・＝ボタンクリック</a></li><li><a href="#toc15" tabindex="0">・is_ope_last() 関数</a></li></ol></li></ol></li><li><a href="#toc16" tabindex="0">デモ</a></li><li><a href="#toc17" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずは<span class="marker-under">今回作成する電卓の機能を決定</span>します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>コーディングする前に機能を決定しておくことは、手戻りを防ぐためにも大事ですね♪</p>
</div></div>



<p>今回は次の機能を持たせました。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list">
<li>四則演算ができる</li>



<li>Cキーで初期化</li>



<li>＝で計算した後<br>数字の場合、初期化したあと数字入力<br>演算子の場合、結果はそのまま使用</li>



<li>最初のキーが”0”、&#8221;.&#8221;、&#8221;+-×/&#8221;の場合、<br>あらかじめ0が入力されている前提で式に入力</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>今回はこのまま進みますが、機会があればアップデートしていきたいですね♪</p>
</div></div>



<p>完成イメージ図はこちらです。<a href="https://nyanblog2222.com/demo/calc1/">デモページ</a>もありますので見てみてください。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="450" src="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png" alt="" class="wp-image-4515" srcset="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png 450w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-300x300.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-150x150.png 150w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-100x100.png 100w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">HTML</span></h2>



<p>まずはHTMLを作成していきます。<br>作成しているのは、次の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list">
<li>ヘッダー<br>「電卓」の文字</li>



<li>計算の表示枠</li>



<li>数字や演算子 ボタン</li>
</ul>
</div>



<h3 class="wp-block-heading"><span id="toc3">コード</span></h3>



<pre class="wp-block-code html"><code>&lt;div class="wrapper"&gt;
  &lt;h1 id="header"&gt;電卓&lt;/h1&gt;
  &lt;div id="calc"&gt;
    &lt;div&gt;
      &lt;input readonly id="result" type="text" value="0"&gt;
      &lt;button onclick="c_click()"&gt;C&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;7&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;8&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;9&lt;/button&gt;
      &lt;button onclick="ope_click(this.innerHTML)"&gt;÷&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;4&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;5&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;6&lt;/button&gt;
      &lt;button onclick="ope_click(this.innerHTML)"&gt;×&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;1&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;2&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;3&lt;/button&gt;
      &lt;button onclick="ope_click(this.innerHTML)"&gt;-&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;0&lt;/button&gt;
      &lt;button onclick="num_click(this.innerHTML)"&gt;.&lt;/button&gt;
      &lt;button onclick="equal_click()"&gt;=&lt;/button&gt;
      &lt;button onclick="ope_click(this.innerHTML)"&gt;+&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p><span class="marker-under">input後のbuttonや、button後のbutton</span>について<br>分かりやすいように改行を入れていますが、<span class="marker-under">実際のコードでは改行していない</span>ので注意してください。</p>
</div></div>



<p>HTMLファイルを見てみると画像のように表示されます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="450" src="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304_2.png" alt="" class="wp-image-4522" srcset="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304_2.png 450w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304_2-300x300.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304_2-150x150.png 150w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304_2-100x100.png 100w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure>



<h3 class="wp-block-heading"><span id="toc4">HTML解説</span></h3>



<ul class="wp-block-list">
<li>5行目　input要素<br>・readonly属性にして直接入力不可<br>・計算式や結果を表示するためid=&#8221;result&#8221;を設定<br>・valueを0にして初期表示</li>



<li>6行目　Cボタン<br>onclick属性で&#8221;c_click()&#8221;を設定</li>



<li>数字ボタン<br>onclick属性で&#8221;num_click(this.innerHTML)&#8221;を設定<br>this.innerHTMLはHTMLの中身を表しています。<br>例）9行目であれば&#8221;7&#8243;が入ります。</li>



<li>演算子ボタン<br>onclick属性で&#8221;ope_click(this.innerHTML)&#8221;を設定</li>



<li>29行目　イコールボタン<br>onclick属性で&#8221;equal_click()&#8221;を設定</li>
</ul>



<h2 class="wp-block-heading" id="block-9c55e8b0-4699-44c9-8292-f6eb513518f3"><span id="toc5">CSS</span></h2>



<p id="block-5cb743a1-2754-4c53-9351-04a5a1df0cb0">次にCSSでスタイルを決定します。<br>”reset.css”も使っているので、この辺りは好きなようにカスタマイズをしてください。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";
/*全体*/
.wrapper{
  max-width: 350px;
  margin: 0 auto;
  color: #666;
}
#header,#calc{
  box-sizing: border-box;
  text-align: center;
}
/*ヘッダー*/
#header {
  font-size: 24px;
  padding: 1rem;
}
/*テキスト*/
input{
  box-sizing: border-box;
  width: 75%;
  height: 3.5rem;
  font-size: 1.6rem;
  text-align: right;
  padding: 0 0.75rem;
}
/*ボタン関係*/
button{
  font-size: 18px;
  width: 25%;
  height: 3.5rem;
  color: #333;
  vertical-align: middle;
  border-color: #fff;
}
button:hover{
  background-color: #ddd;
}
</code></pre>



<p>設定が終わると、このように表示されるようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="450" height="450" src="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png" alt="" class="wp-image-4515" srcset="https://nyanblog2222.com/wp-content/uploads/2022/03/20220304.png 450w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-300x300.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-150x150.png 150w, https://nyanblog2222.com/wp-content/uploads/2022/03/20220304-100x100.png 100w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure>



<h2 class="wp-block-heading"><span id="toc6">JavaScript</span></h2>



<h3 class="wp-block-heading"><span id="toc7">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>最初はコピペして自分で理解しながらカスタマイズする方法も勉強するのに向いていますよ！</p>
</div></div>



<pre class="wp-block-code javascript"><code>// データ
var result = "";
// =で計算したかどうか
var is_calc = false;

// 初期表示
window.onload = function () {
  result = document.getElementById('result');
};

// Cキー押下
function c_click(){
  result.value = "0";
  is_calc = false;
}

// 数字キー押下
function num_click(val){
  if(is_calc)  result.value = "0";
  is_calc = false;  

  if(result.value =="0" &amp;&amp; val == "0"){
    result.value = "0";
  }else if(result.value == "0" &amp;&amp; val == "."){
    result.value = "0.";
  }else if(result.value == "0"){
    result.value = val;
  }else{
    result.value += val;
  }
}

// 演算子キー押下
function ope_click(val){
  if(is_calc)  is_calc = false;
  
  if(is_ope_last()){
    result.value = result.value.slice(0, -1) + val;
  } else {
    result.value += val;
  }
}

// =キークリック
function equal_click(){
  if(is_ope_last())  result.value = result.value.slice(0, -1);

  var temp = new Function("return " + result.value.replaceAll("×", "*").replaceAll("÷", "/"))();
  if(temp == Infinity || Number.isNaN(temp)){
    result.value = "Error";
  }else{
    result.value = temp;
    is_calc = true;
  }
}

// 入力されている値が演算子かどうか
function is_ope_last(){
  return &#91;"+","-","×","÷"].includes(result.value.toString().slice(-1));
}
</code></pre>



<h3 class="wp-block-heading"><span id="toc8">解説</span></h3>



<p>先述したコードに対して細かく解説していきます！</p>



<h4 class="wp-block-heading"><span id="toc9">・グローバル変数の定義</span></h4>



<p>2つの変数を定義、初期化しています。<br>result変数はhtmlの<span class="marker-under">id=&#8221;ressult&#8221;</span>と紐づけします。</p>



<pre class="wp-block-code javascript"><code>// 表示させるデータ
var data = "";
// =で計算したかどうか
var is_calc = false;</code></pre>



<h4 class="wp-block-heading"><span id="toc10">・HTML読み込み後</span></h4>



<p>HTML読み込み後、<span class="marker-under">id&#8221;result&#8221;と変数のresultを紐づけ</span>しています。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {
  result = document.getElementById('result');
};</code></pre>



<h4 class="wp-block-heading"><span id="toc11">・Cボタンクリック</span></h4>



<p>Cボタンクリック時のイベントを記述しています。<br>ここでは変数の初期化を行っています。</p>



<pre class="wp-block-code javascript"><code>function c_click(){
  result.value = "0";
  is_calc = false;
}</code></pre>



<h4 class="wp-block-heading"><span id="toc12">・数字ボタンクリック</span></h4>



<p>数字ボタンクリック時のイベントを記述しています。</p>



<pre class="wp-block-code javascript"><code>function num_click(val){
  if(is_calc)  result.value = "0";
  is_calc = false;  

  if(result.value =="0" &amp;&amp; val == "0"){
    result.value = "0";
  }else if(result.value == "0" &amp;&amp; val == "."){
    result.value = "0.";
  }else if(result.value == "0"){
    result.value = val;
  }else{
    result.value += val;
  }
}</code></pre>



<ul class="wp-block-list">
<li>2、3行目<br>1度&#8221;＝&#8221;で計算済みの場合、数字ボタンを押したら<span class="marker-under">resultを初期化</span>します。<br><span class="bold">is_calcはfalse</span>にします。</li>



<li>5～13行目<br>入力した数字によって<span class="marker-under">resultの処理</span>を行います。<br>・1つ目の条件は初期化後、&#8221;0&#8243;が入力された場合、resultに&#8221;0&#8243;を設定<br>・2つ目の条件は初期化後、&#8221;.&#8221;が入力された場合、resultに&#8221;0.&#8221;を設定<br>・3つ目の条件は初期化後、上記以外の数字が入力された場合、resultに入力値を設定<br>・それ以外は直接resultに入力値を追加</li>
</ul>



<h4 class="wp-block-heading"><span id="toc13">・演算子ボタンクリック</span></h4>



<p>演算子ボタンクリック時のイベントを記述しています。</p>



<pre class="wp-block-code javascript"><code>function ope_click(val){
  if(is_calc)  is_calc = false;
  
  if(is_ope_last()){
    result.value = result.value.slice(0, -1) + val;
  } else {
    result.value += val;
  }
}</code></pre>



<ul class="wp-block-list">
<li>2行目<br><span class="marker-under">is_calcがtrueの場合があるのでfalse</span>にします</li>



<li>4～8行目<br>条件によって計算式の処理を変えています。<br>1つ目の条件では、<span class="marker-under">直前のボタンが演算子の場合、演算子を切り替え</span>ます。<br>それ以外では、<span class="marker-under">計算式に入力した演算子を付け加え</span>ます。</li>
</ul>



<pre class="wp-block-code javascript"><code>// 1つ目の条件：例
// 直前の計算式
9×6+
// 押したボタン
-
// 演算子切り替え後
9×6-</code></pre>



<h4 class="wp-block-heading"><span id="toc14">・＝ボタンクリック</span></h4>



<p>＝ボタンクリック時のイベントを記述しています。</p>



<pre class="wp-block-code javascript"><code>function equal_click(){
  if(is_ope_last())  result.value = result.value.slice(0, -1);

  var temp = new Function("return " + result.value.replaceAll("×", "*").replaceAll("÷", "/"))();

  if(temp == Infinity || Number.isNaN(temp)){
    result.value = "Error";
  }else{
    result.value = temp;
    is_calc = true;
  }
}</code></pre>



<ul class="wp-block-list">
<li>2行目<br>計算式の最後が演算子の場合、<span class="marker-under">演算子を取り除き</span>ます。</li>



<li>4行目<br><span class="marker-under">変数tempに計算式の計算結果を設定</span>します。</li>



<li>7～9行目<br>計算結果がInfinity（無限大）かNaN（数字出ない）場合、<span class="marker-under">resultにErrorを設定</span>します。</li>



<li>8～11行目<br><span class="marker-under">tempの値をresultに設定し、計算済み（is_calc）フラグをtrue</span>にします。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc15">・is_ope_last() 関数</span></h4>



<p><span class="bold-red">計算式の最後が演算子か判定する</span>関数です。<br>「result.value.toString().slice(-1)」は計算式の最後の文字を取得し、<br>「[&#8220;+&#8221;,&#8221;-&#8220;,&#8221;×&#8221;,&#8221;÷&#8221;].includes(&#8230;」で<span class="marker-under">4つの演算子と一致するかどうかbool型で返して</span>います。</p>



<pre class="wp-block-code javascript"><code>function is_ope_last(){
  return &#91;"+","-","×","÷"].includes(result.value.toString().slice(-1));
}
</code></pre>



<h2 class="wp-block-heading"><span id="toc16">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/calc1/">こちらがデモページ</a>になります。<br>電卓が表示され、ボタンを押すと実際に計算ができるのでぜひ試してみてください♪</p>



<h2 class="wp-block-heading"><span id="toc17">最後に</span></h2>



<p>いかがでしたでしょうか。<br>次回はvue.jsに書き換えしてみます！</p>



<p>良ければ別のサンプルページも見てみてくださいね♪</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://nyanblog2222.com/programming/javascript/4571/" title="【初心者】簡単！vue.jsで電卓の作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/61-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/61-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者】簡単！vue.jsで電卓の作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JS[JavaScript]で四則演算ができる簡易的な計算機を作成しました。プログラミング初心者の方への勉強向け記事になりますのでデモページを見ながらコード、関数を見ながら作成してみてはいかがでしょうか。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.03.10</div></div></div></div></a>
</div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://nyanblog2222.com/programming/javascript/4717/" title="【サンプル】JavaScriptのコードまとめリンク集" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/85-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/85-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【サンプル】JavaScriptのコードまとめリンク集</div><div class="blogcard-snippet internal-blogcard-snippet">本記事では当ブログで上げているJavaScript記事のまとめリンク集になります。目次でカテゴリ分けをしているので、気になる内容がありましたら目次から飛んでみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.09.01</div></div></div></div></a>
</div>
<p>投稿 <a href="https://nyanblog2222.com/programming/4496/">【初心者】簡単！JavaScriptで電卓の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/4496/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】カウントダウンタイマーの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1200/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1200/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 13 Aug 2021 05:01:54 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[setInterval]]></category>
		<category><![CDATA[カウントダウン]]></category>
		<category><![CDATA[タイマー]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1200</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/69.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/69.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptでカウントダウンタイマーを作成してみました！ オリンピックやワールドカップ、クリスマスやお正月など季節の行事事のタイマーとしても使えます！ 今回はシンプルなスタイルで作成していますが [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1200/">【JavaScript】カウントダウンタイマーの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/69.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/69.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回は<span class="marker-under-red">JavaScriptでカウントダウンタイマーを作成</span>してみました！</p>



<p>オリンピックやワールドカップ、クリスマスやお正月など季節の行事事のタイマーとしても使えます！</p>



<p>今回はシンプルなスタイルで作成していますが、CSSで派手なスタイルにしても面白いと思います♪</p>



<p>カウントを取る動きとして似ている<span class="marker-under-red">アナログ時計を作った記事</span>も<br>良かったら見ていただけると嬉しいです！</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1382/" title="【JavaScript】アナログ時計の作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/64-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】アナログ時計の作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">先日はJavaScriptでカウントダウンタイマーを作成してみました。今回は前回の記事の内容を利用してアナログ時計を作ってみようともいます。サンプルもありますのでコピペで簡単にできます！初心者の方や勉強されている方におすすめなので、良かったら試してみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.24</div></div></div></div></a>
</div></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-24" checked><label class="toc-title" for="toc-checkbox-24">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">JavaScript</a></li><li><a href="#toc3" tabindex="0">デモ</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>今回のHTMLはとてもシンプルです。</p>



<p>現在時刻とカウントダウンタイマーのp要素をそれぞれ作成しています。</p>



<pre class="wp-block-code html"><code>&lt;body&gt;
    &lt;p id="now"&gt;&lt;/p&gt;
    &lt;p id="count_down"&gt;&lt;/p&gt;
&lt;/body&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">JavaScript</span></h2>



<p>時間の表示については、JavaScriptを使用しています。</p>



<p>主に現在時刻の出力とカウントダウンの出力とそれぞれ実装しています。</p>



<pre class="wp-block-code javascript"><code>// 曜日の配列を取得
var week_day = &#91;"日", "月", "火", "水", "木", "金", "土"];

window.onload = function () {

    var id = setInterval(function(){
        // 現在日時を出力
        var now_date = new Date();
        var now_date_str = "今日の日付は" + get_nichiji(now_date) + "（" + week_day&#91;now_date.getDay()] + "）です。" + "&lt;br&gt;" +
            "時刻は" + get_jikoku(now_date) + "です。";
        
        document.getElementById("now").innerHTML = now_date_str;
        
        // 年末までのカウントダウン
        var nen_matsu = new Date(now_date.getFullYear() + 1 + "/1/01");
        var count_down = nen_matsu.getTime() - now_date.getTime();
        
        // 日にちから計算していく
        var day = Math.floor(count_down / (1000 * 60 * 60 * 24));
        count_down -=  (day *(1000 * 60 * 60 * 24));
        var hour = Math.floor(count_down / (1000 * 60 * 60));
        count_down -= (hour *(1000 * 60 * 60));
        var minutes =  Math.floor(count_down / (1000 * 60));
        count_down -= (minutes * (1000 * 60));
        var second = Math.floor(count_down / 1000);
        
        var count_down_str = get_nichiji(nen_matsu) + "まで、あと" +
            day + "日" + hour + "時" + minutes + "分" + second + "秒" + "です。";
        document.getElementById("count_down").innerHTML = count_down_str;
    }, 1000);
};

// 月を正しい表示で出力
function get_month(date_obj) {
    return date_obj.getMonth() + 1;
}

// 〇〇年〇〇月〇〇日表示
function get_nichiji(date_obj) {
    return date_obj.getFullYear() + "年" + get_month(date_obj) + "月" + date_obj.getDate() + "日";
}

// 〇〇時〇〇分〇〇秒表示
function get_jikoku(date_obj) {
    return date_obj.getHours() + "時" + date_obj.getMinutes() + "分" + date_obj.getSeconds() + "秒";
}

// 曜日取得
function get_week_day(date_obj) {
    return week_day&#91;date_obj.getDay()];
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">デモ</span></h2>



<p>出力内容はこちらです！<br>1秒ごとに<span class="marker-under-red">現在時刻</span>と<span class="marker-under-red">翌年の1月1日までのカウントダウン</span>の秒数が表示されています。</p>



<p>↓の赤枠に何も表示されていない場合、数秒そのままでお待ちください。</p>



<div class="wp-block-sbd-background-block sbd-bg-color sbd-inner-block-init is-style-red">
    <p id="now"></p>
    <p id="count_down"></p>
</div>
    <script type="text/javascript">
        // 曜日の配列を取得
        var week_day = ["日", "月", "火", "水", "木", "金", "土"];

        window.onload = function () {

            var id = setInterval(function(){
                // 現在日時を出力
                var now_date = new Date();
                var now_date_str = "今日の日付は" + get_nichiji(now_date) + "（" + week_day[now_date.getDay()] + "）です。" + "<br>" +
                    "時刻は" + get_jikoku(now_date) + "です。";

                document.getElementById("now").innerHTML = now_date_str;

                // 年末までのカウントダウン
                var nen_matsu = new Date(now_date.getFullYear() + 1 + "/1/01");
                var count_down = nen_matsu.getTime() - now_date.getTime();

                // 日にちから計算していく
                var day = Math.floor(count_down / (1000 * 60 * 60 * 24));
                count_down -=  (day *(1000 * 60 * 60 * 24));
                var hour = Math.floor(count_down / (1000 * 60 * 60));
                count_down -= (hour *(1000 * 60 * 60));
                var minutes =  Math.floor(count_down / (1000 * 60));
                count_down -= (minutes * (1000 * 60));
                var second = Math.floor(count_down / 1000);

                var count_down_str = get_nichiji(nen_matsu) + "まで、あと" +
                    day + "日" + hour + "時" + minutes + "分" + second + "秒" + "です。";
                document.getElementById("count_down").innerHTML = count_down_str;
            }, 1000);
        };

        // 月を正しい表示で出力
        function get_month(date_obj) {
            return date_obj.getMonth() + 1;
        }

        // 〇〇年〇〇月〇〇日表示
        function get_nichiji(date_obj) {
            return date_obj.getFullYear() + "年" + get_month(date_obj) + "月" + date_obj.getDate() + "日";
        }

        // 〇〇時〇〇分〇〇秒表示
        function get_jikoku(date_obj) {
            return date_obj.getHours() + "時" + date_obj.getMinutes() + "分" + date_obj.getSeconds() + "秒";
        }

        // 曜日取得
        function get_week_day(date_obj) {
            return week_day[date_obj.getDay()];
        }
    </script>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p>いかがでしたでしょうか。</p>



<p>今回はJavaScriptでカウントダウンタイマーを作成しました！<br>日付の表示方法やカウントするためのタイマー処理を主に使用しました。</p>



<p>今回は機能を主にご紹介しましたが、CSSでスタイルを設定して<br>おしゃれなカウントダウンタイマーを作ってみてはいかがでしょうか。</p>



<p>アナログ時計を作った記事も良かったら見てください！</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1382/" title="【JavaScript】アナログ時計の作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/64-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】アナログ時計の作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">先日はJavaScriptでカウントダウンタイマーを作成してみました。今回は前回の記事の内容を利用してアナログ時計を作ってみようともいます。サンプルもありますのでコピペで簡単にできます！初心者の方や勉強されている方におすすめなので、良かったら試してみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.24</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1200/">【JavaScript】カウントダウンタイマーの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1200/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】変数、型の違い【var let const】</title>
		<link>https://nyanblog2222.com/programming/javascript/1378/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1378/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 21:21:06 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[let]]></category>
		<category><![CDATA[var]]></category>
		<category><![CDATA[グローバル変数]]></category>
		<category><![CDATA[ローカル変数]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1378</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。 変数の宣言でvar、let、constそれぞれどの状況で使用していますか？ 私は特にvarとletについて違いが良く分からなかったので、この機会に調べてまとめてみました。 良かったら参考にしてください！ 目 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1378/">【JavaScript】変数、型の違い【var let const】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。</p>



<p>変数の宣言でvar、let、constそれぞれどの状況で使用していますか？</p>



<p>私は特にvarとletについて違いが良く分からなかったので、この機会に調べてまとめてみました。</p>



<p>良かったら参考にしてください！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-26" checked><label class="toc-title" for="toc-checkbox-26">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ローカルスコープとグローバルスコープ</a></li><li><a href="#toc2" tabindex="0">変数宣言キーワード</a><ol><li><a href="#toc3" tabindex="0">varについて</a></li><li><a href="#toc4" tabindex="0">letについて</a></li><li><a href="#toc5" tabindex="0">constについて</a></li></ol></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ローカルスコープとグローバルスコープ</span></h2>



<p>まずは、<strong><span style="color: #b78d4a;" class="has-inline-color">ローカルスコープ</span></strong>と<strong><span style="color: #b78d4a;" class="has-inline-color">グローバルスコープ</span></strong>についてです。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">スコープ</span></strong>とは、変数が参照したり変更できたりと<span class="marker-yellow">使用できる有効範囲</span>を指します。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">ローカルスコープ</span></strong>はある<span class="marker-yellow">特定の範囲内でのみ有効となるスコープ</span>です。<br>特定の範囲とは、これから出てくる関数やブロックなど括られた範囲を指します。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">グローバルスコープ</span></strong>は名の通り<span class="marker-yellow">どこからでも使用できる有効範囲を持つスコープ</span>です。</p>



<p>どこでも使用することが可能なので、とても便利であるように感じますが<br>意図しない箇所で上書きしてしまったり、利用してしまったりすることで<br>不具合の原因となってしまいます。</p>



<p>そのため、<span style="color: #000000;"><span class="has-inline-color"><span class="marker-yellow">できる限り変数のスコープは小さくする</span></span></span>ことが<br>読みやすいコードにつながると言われています。</p>



<p>本記事では特にvarとletに関して<span style="color: #000000;"><span class="has-inline-color"><span class="marker-yellow">スコープを意識して使い分けていくこと</span></span></span>をおすすめしています！</p>



<h2 class="wp-block-heading"><span id="toc2">変数宣言キーワード</span></h2>



<h3 class="wp-block-heading"><span id="toc3">varについて</span></h3>



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・ES2015以前より使用できる変数宣言キーワード<br>・ スコープは<strong><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><br>・ 関数内のどこで宣言しても、<strong><span style="color: #b78d4a;" class="has-inline-color">先頭で定義した扱い</span></strong>となる<br>・ ifやfor文内で宣言した変数でも、同じ関数内であれば使用できる</dd>
</dl>



<pre class="wp-block-code javascript"><code>// 例
function Sample() {
    for(let i=1;i&lt;=3;i++){
        console.log(i)
    }
    
    // ブロック外なので、アクセスできずエラー
    console.log(i)
}</code></pre>



<h3 class="wp-block-heading"><span id="toc4">letについて</span></h3>



<p>varとの主な違いは<span class="marker-yellow">スコープの範囲</span>です。</p>



<p>varではif文やfor文のようにブロック内で宣言した変数でも、<br>同じ関数内であれば使用することができますが、<br><span class="marker-yellow">letではブロック内で宣言した変数はブロックの範囲を超えると使用することができません</span>。</p>



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・<span style="color: initial;">ES2016以降より使用可能（IE9等、少し古いバージョンのブラウザだと動かない場合がある）</span><br>・<span style="color: initial;">スコープは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><span style="color: initial;">、もしくは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">ブロック内部</span></strong><br><span style="color: initial;"></span>・<span style="color: initial;">varと比べて、よりスコープを限定することができる</span></dd>
</dl>



<pre class="wp-block-code javascript"><code>// 例
function Sample() {
    var sample1 = 1;
    // var i;

    // 再代入可能
    sample1 = 3;

    for(var i=1;i&lt;=3;i++){
        console.log(i)
    }
    
    // 同じ関数内なので、アクセスできる
    console.log(i)
    
    console.log(gloval_hensu)
}

// 関数外なので参照できず、エラー
console.log(i)</code></pre>



<h3 class="wp-block-heading"><span id="toc5">constについて</span></h3>



<p>constはこの3つの中だと、 一番特徴が分かりやすいです。<br>それは<span class="marker-yellow">再代入（変更）できない</span>ため定数として扱われます。</p>



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・<span style="color: initial;">ES2016以降より使用可能（IE9等、少し古いバージョンのブラウザだと動かない場合がある）</span><br>・<span style="color: initial;">スコープは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><span style="color: initial;">、もしくは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">ブロック内部</span></strong><span style="color: initial;">再代入ができない（定数扱いとなる）</span><br>・<span style="color: initial;">宣言のみはできず</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">必ず値を代入する必要</span></strong><span style="color: initial;">がある。</span></dd>
</dl>



<p>定数とは、一度宣言されると値が固定され変更できない値を指します。</p>



<pre class="wp-block-code javascript"><code>// 例
// 宣言時に値を代入していないので、エラー
const sample1;

const sample2 = "test2";
const sample3 = "test3";

// 代入できないので、エラー
sample3 = "sample3";

if(sample2 === "test2"){
    const sample4 = "test4";
}

// sample4はブロック内で宣言されているため、
// ブロックの外で使用し、スコープからはみ出ているのでエラー
console.log(sample4);</code></pre>



<h2 class="wp-block-heading"><span id="toc6">まとめ</span></h2>



<p>いかがでしたでしょうか。</p>



<p>ちょっとしたことなのですが、<br>忘れやすかったりするので良かったら時々見に来てください♪</p>



<p>ちなみに、JavaScriptは変数宣言キーワード（var, let, const）を使用しなくても宣言することができます。</p>



<p><span class="marker-under-red">キーワードを使用することで有効範囲が変わってくる</span>ので、<br>予期せぬ動きをさせないためにも、使用した方が良いですね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1378/">【JavaScript】変数、型の違い【var let const】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1378/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript／JS】Canvasとは？【HTML5／使い方】</title>
		<link>https://nyanblog2222.com/programming/html-css/699/</link>
					<comments>https://nyanblog2222.com/programming/html-css/699/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 21:19:50 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=699</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />皆さんCanvasを使用したことはありますか？今回はCanvasを使って、2Dの簡単な図形を描画する方法を紹介していきます。 目次 Canvasとは？HTMLの設定描画コンテキストの取得四角形を描画プロパティ関数実装線（ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/699/">【JavaScript／JS】Canvasとは？【HTML5／使い方】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>皆さんCanvasを使用したことはありますか？<br>今回はCanvasを使って、2Dの簡単な図形を描画する方法を紹介していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-28" checked><label class="toc-title" for="toc-checkbox-28">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Canvasとは？</a></li><li><a href="#toc2" tabindex="0">HTMLの設定</a></li><li><a href="#toc3" tabindex="0">描画コンテキストの取得</a></li><li><a href="#toc4" tabindex="0">四角形を描画</a><ol><li><a href="#toc5" tabindex="0">プロパティ</a></li><li><a href="#toc6" tabindex="0">関数</a></li><li><a href="#toc7" tabindex="0">実装</a></li></ol></li><li><a href="#toc8" tabindex="0">線（パス）を描画</a><ol><li><a href="#toc9" tabindex="0">関数</a></li><li><a href="#toc10" tabindex="0">実装</a></li></ol></li><li><a href="#toc11" tabindex="0">円（円弧）の描画</a><ol><li><a href="#toc12" tabindex="0">関数</a></li><li><a href="#toc13" tabindex="0">実装</a></li></ol></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Canvasとは？</span></h2>



<p>Canvasとは、<strong><span style="color:#b78d4a" class="has-inline-color">HTML5から追加された2Dの図形を描画するための技術</span></strong>です。<br>使い方としては、HTMLで要素を作成・IDを指定し、JavaScriptで描画する内容を実装します。<br>例として、グラフを描く、写真を合成する、シンプルなアニメーションを表現することができます。</p>



<h2 class="wp-block-heading"><span id="toc2">HTMLの設定</span></h2>



<p>HTMLで<strong><span style="color:#b78d4a" class="has-inline-color">canvasを設定</span></strong>します。<br>JavaScriptで指定するために<strong><span style="color:#b78d4a" class="has-inline-color">id=&#8221;canvas&#8221;</span></strong>を指定しています。<br>属性で幅(width)、高さ(height)を設定していますが、JavaScriptでも設定が可能です。</p>



<p>また、canvasブロック内で”代替コンテンツ”と設定していますが、<br>これはcanvasに対応しないブラウザやJavaScriptを無効にしている場合、<strong><span style="color:#b78d4a" class="has-inline-color">代替コンテンツを出力</span></strong>しています。<br>代替コンテンツには、テキストや画像など設定することができます。</p>



<pre class="wp-block-code javascript"><code>&lt;body>
    &lt;canvas id="canvas" width="500" height="500">代替コンテンツ&lt;/canvas>
&lt;/body></code></pre>



<h2 class="wp-block-heading"><span id="toc3">描画コンテキストの取得</span></h2>



<p>HTMLでCanvasを設定しましたが、そのままでは何も描画されません。<br><strong><span style="color:#b78d4a" class="has-inline-color">getContext関数</span></strong>で、<strong><span style="color:#b78d4a" class="has-inline-color">コンテキスト</span></strong>を取得することができます。</p>



<pre class="wp-block-code javascript"><code>// HTMLの読込完了後に実行
window.onload = function () {
    // id='canvas'の要素を取得
    var canvas = document.getElementById('canvas');

    // 2次元の描画コンテキストを取得
    var ctx = canvas.getContext('2d');
}</code></pre>



<p>getContext関数の第1引数にコンテキストの種類を指定することができます。<br>今回は2次元の描画コンテキスト（CanvasRenderingContext2D）を取得しています。<br>他の設定値は以下の通りです。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">webgl</span></strong><br>3次元グラフィックス描画（WebGL <strong><span style="color:#b78d4a" class="has-inline-color">ver1</span></strong>）コンテキスト<br>（<strong><span style="color:#b78d4a" class="has-inline-color">WebGL</span></strong>RenderingContext） を取得します。</li><li><strong><span style="color:#b78d4a" class="has-inline-color">webgl2</span></strong><br>3次元グラフィックス描画（WebGL <strong><span style="color:#b78d4a" class="has-inline-color">ver2</span></strong>）コンテキスト　　　　　　（<strong><span style="color:#b78d4a" class="has-inline-color">WebGL2</span></strong>RenderingContext） を取得します。</li></ul>



<p><strong><span style="color:#b78d4a" class="has-inline-color">WebGL</span></strong>・・・Web用のOpenGL（グラフィック専用のライブラリ）</p>



<p>これで描画する準備ができました。<br>次項目から実際に図形を描画してみましょう。</p>



<h2 class="wp-block-heading"><span id="toc4">四角形を描画</span></h2>



<p>まずは四角形を描画してみましょう。<br>こちらのプロパティと関数を使って描画することができます。</p>



<h3 class="wp-block-heading"><span id="toc5">プロパティ</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">fillStyle</span></strong>・・・塗りつぶしのスタイルを設定（色・グラデーション・パターン値）</li><li><strong><span style="color:#b78d4a" class="has-inline-color">strokeStyle</span></strong>・・・境界線のスタイルを設定（色・グラデーション・パターン値）</li><li><strong><span style="color:#b78d4a" class="has-inline-color">lineWidth</span></strong>・・・境界線の幅を設定</li></ul>



<h3 class="wp-block-heading"><span id="toc6">関数</span></h3>



<ul class="wp-block-list"><li><span style="color:#b78d4a" class="has-inline-color"><strong>fillRect(x, y, width, height)</strong></span>・・・塗りつぶし状態の四角形を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">strokeRect(x, y, width, height)</span></strong>・・・四角形の境界線を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">clearRect(x, y, width, height)</span></strong>・・・指定範囲の四角形を消去し、透明になる</li></ul>



<h3 class="wp-block-heading"><span id="toc7">実装</span></h3>



<p>それでは実際に描画してみましょう。<br>こちらがソースコードです。詳しい内容はコメントを記載しています。</p>



<pre class="wp-block-code javascript"><code>&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 塗りつぶしの色を設定
    ctx.fillStyle = "#FFF3D9";
    // 塗りつぶされた状態の四角形を描画
    ctx.fillRect(25, 25, 120, 150);

    // 指定範囲の四角形を消去し、透明になる
    ctx.clearRect(40, 45, 90, 75);

    // 境界線の色を設定
    ctx.strokeStyle = "#C6A35B";
    // 線の幅を設定
    ctx.lineWidth = 5;

    // 四角形の境界線を描画する
    ctx.strokeRect(60, 57.5, 50, 50);
&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');

        // 塗りつぶしの色を設定
        ctx.fillStyle = "#FFF3D9";
        // 塗りつぶされた状態の四角形を描画
        ctx.fillRect(25, 25, 120, 150);

        // 指定範囲の四角形を消去し、透明になる
        ctx.clearRect(40, 45, 90, 75);

        // 境界線の色を設定
        ctx.strokeStyle = "#C6A35B";
        // 線の幅を設定
        ctx.lineWidth = 5;

        // 四角形の境界線を描画する
        ctx.strokeRect(60, 57.5, 50, 50);
    </script>



<h2 class="wp-block-heading"><span id="toc8">線（パス）を描画</span></h2>



<p>四角形の他には、パスを組み合わせて描画することで図形を表現することができます。<br>パスを用いた図形の描画では、次の関数を使用します。</p>



<h3 class="wp-block-heading"><span id="toc9">関数</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">beginPath()</span></strong>・・・新規パスを作成。以降の描画呼び出しはパスを構築します。</li><li><strong><span style="color:#b78d4a" class="has-inline-color">closePath()</span></strong>・・・開始パスに直線を描画し、パスを閉じる</li><li><strong><span style="color:#b78d4a" class="has-inline-color">stroke()</span></strong>・・・境界線を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">fill()</span></strong>・・・塗りつぶして描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">moveTo(x, y)</span></strong>・・・指定座標に移動</li><li><strong><span style="color:#b78d4a" class="has-inline-color">lineTo(x, y)</span></strong>・・・現在地から指定座標まで線を描画</li></ul>



<h3 class="wp-block-heading"><span id="toc10">実装</span></h3>



<p>実際に描画してみましょう。<br>詳細はコメントにそれぞれ記載していますので、実装しながらだと理解しやすいかもしれません。</p>



<pre class="wp-block-code javascript"><code>&lt;canvas id="canvas" width="200" height="200">代替コンテンツ&lt;/canvas>
&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 塗りつぶし
    ctx.beginPath();    // パス開始
    ctx.moveTo(50,30);  // x=50, y=30に移動
    ctx.lineTo(80,80);  // x=50→80, y=30→80へパスを設定
    ctx.lineTo(20,80);  // x=80→20, y=80→80へパスを設定
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#A2D7DD";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

    // 輪郭線
    ctx.beginPath();    // パス開始
    ctx.moveTo(10,120); // x=10, y=120に移動
    ctx.lineTo(80,20);  // x=10→80, y=120→20へパスを設定
    ctx.lineTo(180,70); // x=80→180, y=20→70へパスを設定
    ctx.closePath();    // パス終了
    ctx.strokeStyle = "#65C294";    // 輪郭線の色を設定
    ctx.stroke();       // 輪郭線で描画

    // 円（三日月）
    ctx.beginPath();    // パス開始
    ctx.arc(250, 60, 40, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF3D4";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

    ctx.beginPath();    // パス開始
    ctx.arc(270, 60, 25, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas2" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas2');
        var ctx = canvas.getContext('2d');

        //塗りつぶし
        ctx.beginPath();
        ctx.moveTo(50,30);
        ctx.lineTo(80,80);
        ctx.lineTo(20,80);
        ctx.fillStyle = "#A2D7DD";
        ctx.fill();

        //輪郭線
        ctx.beginPath();
        ctx.moveTo(10,120);
        ctx.lineTo(80,20);
        ctx.lineTo(180,70);
        ctx.closePath();
        ctx.strokeStyle = "#65C294";
        ctx.stroke();
    </script>



<p>このようにして、パス使って図形を描画することができました。</p>



<p>注意点ですが、<span style="font-weight: bold; color: rgb(183, 141, 74);" class="has-inline-color">beginPath()の呼び出し直後は、どの関数が呼び出されてもmoveTo()として扱われ実行</span>されます。<br>例えると紙に書く時、鉛筆を紙に添えている動作をイメージしたものです。<br>そのため、基本的には、beginPath()の後や、canvasを新規で作成した後はmoveTo()を意識的に呼び出すようにしてください。</p>



<h2 class="wp-block-heading"><span id="toc11">円（円弧）の描画</span></h2>



<p>続いて、円（円弧）の描画についてです。<br>まずは関数の説明です。</p>



<h3 class="wp-block-heading"><span id="toc12">関数</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">arc(x, y, radius, startAngle, endAngle</span></strong>[, anticlocwise]<strong><span style="color:#b78d4a" class="has-inline-color">)</span></strong>・・・円弧を描画<br>x,y=中心地、radius=半径、startAngle=開始角度、endAngle=終了角度、anticlocwise=周る方向（初期設定：時計回り）</li></ul>



<h3 class="wp-block-heading"><span id="toc13">実装</span></h3>



<p>続いて、ソースコードの内容です。<br>詳細はコメントに記載しています。</p>



<pre class="wp-block-code javascript"><code>&lt;canvas id="canvas" width="200" height="200">代替コンテンツ&lt;/canvas>
&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 円（三日月）大きい円
    ctx.beginPath();    // パス開始
    // (50, 60)を中心に半径40で0～360度分、円を描画
    ctx.arc(50, 60, 40, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF3D4";  // 塗りつぶしの色を設定（薄い黄色）
    ctx.fill();  // 塗りつぶしで描画

    // 円 小さい円で月の中を表現
    ctx.beginPath();    // パス開始
    // (70, 60)を中心に半径25で0～360度分、円を描画
    ctx.arc(70, 60, 25, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF";  // 塗りつぶしの色を設定（白）
    ctx.fill();  // 塗りつぶしで描画

&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas3" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas3');
        var ctx = canvas.getContext('2d');

        // 円（三日月）
        ctx.beginPath();
        ctx.arc(50, 60, 40, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fillStyle = "#FFF3D4";
        ctx.fill();

        ctx.beginPath();
        ctx.arc(70, 60, 25, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fillStyle = "#FFF";
        ctx.fill();
    </script>



<h2 class="wp-block-heading"><span id="toc14">まとめ</span></h2>



<p>今回はHTML5とJavaScriptを使用して、Canvasで2Dの描画をしてみました。<br>ぜひ試してみてくださいね！</p>



<p>今回の記事が何かの参考になれば幸いです♪　</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/699/">【JavaScript／JS】Canvasとは？【HTML5／使い方】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/699/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/2835/</link>
					<comments>https://nyanblog2222.com/programming/javascript/2835/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 09 Jan 2021 02:57:23 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[カレンダー]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[作成]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[演習]]></category>
		<category><![CDATA[祝日]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2835</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/68.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/68.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは！前回はJavaScriptでカレンダーを作成しました。今回は、前回作成したカレンダーに祝日対応を組み込んでいきたいと思います！ 前回の記事は下のリンクからどうぞ♪ 目次 はじめにフロー（箇条書き）CSVファイ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/2835/">【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/68.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/68.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは！<br>前回はJavaScriptでカレンダーを作成しました。<br>今回は、前回作成したカレンダーに祝日対応を組み込んでいきたいと思います！</p>



<p>前回の記事は下のリンクからどうぞ♪</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/2749/" title="【初心者向け】JavaScriptでカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptでカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカレンダーをライブラリなしで作り方を紹介。前月、次月を含めた1週間表示や日付の値を取得する方法をHTML,CSSソースやデモページ付きで解説！プログラミング初心者の方へ勉強や参考に！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.07</div></div></div></div></a>
</div></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-30" checked><label class="toc-title" for="toc-checkbox-30">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">フロー（箇条書き）</a><ol><li><a href="#toc3" tabindex="0">CSVファイル読み込み</a></li><li><a href="#toc4" tabindex="0">当月の日付判定</a></li></ol></li><li><a href="#toc5" tabindex="0">HTML</a></li><li><a href="#toc6" tabindex="0">CSS</a></li><li><a href="#toc7" tabindex="0">JavaScript</a><ol><li><a href="#toc8" tabindex="0">コード</a></li><li><a href="#toc9" tabindex="0">解説</a><ol><li><a href="#toc10" tabindex="0">・祝日データ（CSVファイル）取得</a></li><li><a href="#toc11" tabindex="0">・当月の日付を設定　コード：70～77行目</a></li><li><a href="#toc12" tabindex="0">・日付チェック　checkDate関数</a></li><li><a href="#toc13" tabindex="0">・当日判定　isToday関数</a></li><li><a href="#toc14" tabindex="0">・祝日判定　isHoliday関数</a></li></ol></li></ol></li><li><a href="#toc15" tabindex="0">デモ</a></li><li><a href="#toc16" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>祝日の対応ですが、今回はCSVファイルを読み込んで日付判定を行います。<br>CSVファイルは<a href="https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html">内閣府のWebサイト</a>から取得できます。<br>※ 文字コードをShift-JISからUTF-8に変更しました。</p>



<p>直接ダウンロードされる場合は<a href="https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv">ここをクリック</a>してください。</p>



<p>データは日付、祝日名の2項目で作成されています。</p>



<h2 class="wp-block-heading"><span id="toc2">フロー（箇条書き）</span></h2>



<p>箇条書きで処理フローを記述していきます。<br>CSVファイルの読み込みと当月の日付判定のそれぞれで変更を加えます。</p>



<h3 class="wp-block-heading"><span id="toc3">CSVファイル読み込み</span></h3>



<ol class="wp-block-list">
<li>CSVファイルを読み込み</li>



<li>読み込み完了後、カレンダー表示</li>
</ol>



<h3 class="wp-block-heading"><span id="toc4">当月の日付判定</span></h3>



<ol class="wp-block-list">
<li>その日付の情報を取得（本日か、祝日か等）</li>



<li>条件に応じてカレンダー（HTML）を設定</li>
</ol>



<h2 class="wp-block-heading"><span id="toc5">HTML</span></h2>



<pre class="wp-block-code html"><code>&lt;div class="wrapper"&gt;
    &lt;!-- xxxx年xx月を表示 --&gt;
    &lt;h1 id="header"&gt;&lt;/h1&gt;

    &lt;!-- ボタンクリックで月移動 --&gt;
    &lt;div id="next-prev-button"&gt;
        &lt;button id="prev" onclick="prev()"&gt;‹&lt;/button&gt;
        &lt;button id="next" onclick="next()"&gt;›&lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- カレンダー --&gt;
    &lt;div id="calendar"&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>



<p>こちらの記事のHTMLと同じなので、解説は省略します♪</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/2749/" title="【初心者向け】JavaScriptでカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptでカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカレンダーをライブラリなしで作り方を紹介。前月、次月を含めた1週間表示や日付の値を取得する方法をHTML,CSSソースやデモページ付きで解説！プログラミング初心者の方へ勉強や参考に！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.07</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading"><span id="toc6">CSS</span></h2>



<p><a href="https://nyanblog2222.com/programming/javascript/2749/" target="_blank">前回の記事</a>とほとんど変わりなしですが、<br><span class="marker-under-blue">祝日のクラス（=holiday）に日曜日と同様のcolorスタイルの設定</span>を追加しました。</p>



<pre class="wp-block-code"><code>td:first-child,
td.holiday{
    color: red;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc7">JavaScript</span></h2>



<h3 class="wp-block-heading"><span id="toc8">コード</span></h3>



<p>全体のコードです。<br>次項で解説しますが、前回の投稿で解説した内容は割愛いたします。</p>



<pre class="wp-block-code"><code>const week = &#91;"日", "月", "火", "水", "木", "金", "土"];
const today = new Date();
// 月末だとずれる可能性があるため、1日固定で取得
var showDate = new Date(today.getFullYear(), today.getMonth(), 1);

// 祝日取得
var request;
window.onload = function () {
    request = new XMLHttpRequest();
    request.open('get', 'syukujitsu.csv', true);
    request.send(null);
    request.onload = function () {
        // 初期表示
        showProcess(today, calendar);
    };
};

// 前の月表示
function prev(){
    showDate.setMonth(showDate.getMonth() - 1);
    showProcess(showDate);
}

// 次の月表示
function next(){
    showDate.setMonth(showDate.getMonth() + 1);
    showProcess(showDate);
}

// カレンダー表示
function showProcess(date) {
    var year = date.getFullYear();
    var month = date.getMonth(); // 0始まり
    document.querySelector('#header').innerHTML = year + "年 " + (month + 1) + "月";

    var calendar = createProcess(year, month);
    document.querySelector('#calendar').innerHTML = calendar;
}

// カレンダー作成
function createProcess(year, month) {
    // 曜日
    var calendar = "&lt;table&gt;&lt;tr class='dayOfWeek'&gt;";
    for (var i = 0; i &lt; week.length; i++) {
        calendar += "&lt;th&gt;" + week&#91;i] + "&lt;/th&gt;";
    }
    calendar += "&lt;/tr&gt;";

    var count = 0;
    var startDayOfWeek = new Date(year, month, 1).getDay();
    var endDate = new Date(year, month + 1, 0).getDate();
    var lastMonthEndDate = new Date(year, month, 0).getDate();
    var row = Math.ceil((startDayOfWeek + endDate) / week.length);

    // 1行ずつ設定
    for (var i = 0; i &lt; row; i++) {
        calendar += "&lt;tr&gt;";
        // 1colum単位で設定
        for (var j = 0; j &lt; week.length; j++) {
            if (i == 0 &amp;&amp; j &lt; startDayOfWeek) {
                // 1行目で1日まで先月の日付を設定
                calendar += "&lt;td class='disabled'&gt;" + (lastMonthEndDate - startDayOfWeek + j + 1) + "&lt;/td&gt;";
            } else if (count &gt;= endDate) {
                // 最終行で最終日以降、翌月の日付を設定
                count++;
                calendar += "&lt;td class='disabled'&gt;" + (count - endDate) + "&lt;/td&gt;";
            } else {
                // 当月の日付を曜日に照らし合わせて設定
                count++;
                var dateInfo = checkDate(year, month, count);
                if(dateInfo.isToday){
                    calendar += "&lt;td class='today'&gt;" + count + "&lt;/td&gt;";
                } else if(dateInfo.isHoliday) {
                    calendar += "&lt;td class='holiday' title='" + dateInfo.holidayName + "'&gt;" + count + "&lt;/td&gt;";
                } else {
                    calendar += "&lt;td&gt;" + count + "&lt;/td&gt;";
                }
            }
        }
        calendar += "&lt;/tr&gt;";
    }
    return calendar;
}

// 日付チェック
function checkDate(year, month, day) {
    if(isToday(year, month, day)){
        return {
            isToday: true,
            isHoliday: false,
            holidayName: ""
        };
    }

    var checkHoliday = isHoliday(year, month, day);
    return {
        isToday: false,
        isHoliday: checkHoliday&#91;0],
        holidayName: checkHoliday&#91;1],
    };
}

// 当日かどうか
function isToday(year, month, day) {
    return (year == today.getFullYear()
        &amp;&amp; month == (today.getMonth())
        &amp;&amp; day == today.getDate());
    }

// 祝日かどうか
function isHoliday(year, month, day) {
    var checkDate = year + '/' + (month + 1) + '/' + day;
    var dateList = request.responseText.split('\n');
    // 1行目はヘッダーのため、初期値1で開始
    for (var i = 1; i &lt; dateList.length; i++) {
        if (dateList&#91;i].split(',')&#91;0] === checkDate) {
            return &#91;true, dateList&#91;i].split(',')&#91;1]];
        }
    }
    return &#91;false, ""];
}</code></pre>



<h3 class="wp-block-heading"><span id="toc9">解説</span></h3>



<h4 class="wp-block-heading"><span id="toc10">・祝日データ（CSVファイル）取得</span></h4>



<pre class="wp-block-code"><code><em>// 祝日取得</em>
<strong>var</strong> request;
window.onload = <strong>function</strong> () {
&nbsp; &nbsp; request = <strong>new</strong> XMLHttpRequest();
&nbsp; &nbsp; request.open('get', 'syukujitsu.csv', true);
&nbsp; &nbsp; request.send(null);
&nbsp; &nbsp; request.onload = <strong>function</strong> () {
&nbsp; &nbsp; &nbsp; <em>// 初期表示</em>
&nbsp; &nbsp; &nbsp; showProcess(today, calendar);
&nbsp; &nbsp; };
};</code></pre>



<p><span class="marker-under-blue">XMLHttpRequestオブジェクトを使用して、変数 request にCSVデータを格納</span>しています。<br>1. request.open()関数でデータ取込のリクエストを行います。<br>2. request.send()関数でリスエストをサーバに送信します。<br>3. 7～10行目はロードが成功して完了後に呼ばれます。</p>



<p>つまり、CSVファイルの読み込みが完了した後にカレンダー表示の関数（showProcess）を呼び出しています。</p>



<h4 class="wp-block-heading"><span id="toc11">・当月の日付を設定　コード：70～77行目</span></h4>



<pre class="wp-block-code"><code><strong>var</strong> dateInfo = checkDate(year, month, count);
<strong>if</strong>(dateInfo.isToday){
    calendar += "&lt;td class='today'&gt;" + count + "&lt;/td&gt;";
} <strong>else</strong> <strong>if</strong>(dateInfo.isHoliday) {
    calendar += "&lt;td class='holiday' title='" + dateInfo.holidayName + "'&gt;" + count + "&lt;/td&gt;";
} <strong>else</strong> {
    calendar += "&lt;td&gt;" + count + "&lt;/td&gt;";
}</code></pre>



<p>1行目：変数 dateInfoに日付チェックの戻り値を設定します。</p>



<p>2～8行目：dateInfoを使って条件に応じて日付を設定していきます。</p>



<p>・dateInfo.isTodayがtrueの場合、クラスtodayを付与して設定。<br>・<span class="marker-under-blue">dateInfo.isHolidayがtrueの場合、クラスholidayを付与、titleに祝日名を設定</span>。<br>・上記以外の場合、日付をそのまま設定。</p>



<p><span class="marker-under-blue">titleに祝日名を設定しているのは、祝日名をツールチップとして表示させるためです。</span><br>ツールチップ：カーソルやマウスポインタを合わせると小さな領域が注釈が表示されるもの。</p>



<h4 class="wp-block-heading"><span id="toc12">・日付チェック　checkDate関数</span></h4>



<p>引数：year（年）、month（月）、day（日）<br>戻り値：日付の情報<br>・当日かどうか（Bool）<br>・祝日かどうか（Bool）<br>・祝日名（文字列）</p>



<pre class="wp-block-code"><code><em>// 日付チェック</em>
<strong>function</strong> <strong>checkDate</strong>(year, month, day) {
    <strong>if</strong>(isToday(year, month, day)){
        <strong>return</strong> {
            isToday: true,
            isHoliday: false,
            holidayName: ""
        };
    }

    <strong>var</strong> checkHoliday = isHoliday(year, month, day);
    <strong>return</strong> {
        isToday: false,
        isHoliday: checkHoliday&#91;0],
        holidayName: checkHoliday&#91;1],
    };
}</code></pre>



<p>日付チェックの関数です。<br>条件に応じて戻り値のオブジェクトを作成しています。</p>



<h4 class="wp-block-heading"><span id="toc13">・当日判定　isToday関数</span></h4>



<p>引数：year（年）、month（月）、day（日）<br>戻り値：当日かどうか（Bool）</p>



<pre class="wp-block-code"><code><em>// 当日かどうか</em>
<strong>function</strong> <strong>isToday</strong>(year, month, day) {
    <strong>return</strong> (year == today.getFullYear()
    &amp;&amp; month == (today.getMonth())
    &amp;&amp; day == today.getDate());
}</code></pre>



<p>today（Date型）を使って、当日かどうかを判定します。</p>



<h4 class="wp-block-heading"><span id="toc14">・祝日判定　isHoliday関数</span></h4>



<p>引数：year（年）、month（月）、day（日）<br>戻り値：配列 [祝日かどうか（Bool）, 祝日名]</p>



<pre class="wp-block-code"><code><em>// 祝日かどうか</em>
<strong>function</strong> <strong>isHoliday</strong>(year, month, day) {
    <strong>var</strong> checkDate = year + '/' + (month + 1) + '/' + day;
    <strong>var</strong> dateList = request.responseText.split('\n');
    <em>// 1行目はヘッダーのため、初期値1で開始</em>
    <strong>for</strong> (<strong>var</strong> i = 1; i &lt; dateList.length; i++) {
        <strong>if</strong> (dateList&#91;i].split(',')&#91;0] === checkDate) {
            <strong>return</strong> &#91;true, dateList&#91;i].split(',')&#91;1]];
        }
    }
    <strong>return</strong> &#91;false, ""];
}</code></pre>



<p>3行目：CSVデータの日付はYYYY/MM/DD形式のため、<br>引数で渡された年月日をYYYY/MM/DD形式で変数checkDateに設定。</p>



<p>4行目：変数dataListには、CSVデータを行毎に配列に格納。</p>



<p>6～10行目：CSVの行数分for文を回します。<br>ファイルの1行目はヘッダー行のため、初期値=1で設定。</p>



<p>7～9行目：<br>祝日：dateList[i].split(‘,’)[0]<br>祝日名：dateList[i].split(‘,’)[1]</p>



<p><span class="marker-under-blue">祝日とcheckDateが一致する場合、戻り値を配列 [true, 祝日名]で設定して処理を完了。<br>どのデータとも一致しない場合は戻り値を配列 [false, 空文字]でセットして処理を完了。</span></p>



<h2 class="wp-block-heading"><span id="toc15">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/calender2/">こちらがデモページ</a>になります。<br>祝日の日付が赤くなっており、該当の日付にカーソルを合わせると祝日の名前が表示されます。</p>



<p>ただ、<span class="marker-under-red">このCSVファイルはその年分までの日付しか入っていないため、<br>2024年以降の祝日には対応されていません。ご注意ください…。</span></p>



<h2 class="wp-block-heading"><span id="toc16">最後に</span></h2>



<p>いかがでしたでしょうか。<br>カレンダーを確認するときに祝日は分かっている方が見やすいですね♪</p>



<p>実装も簡単にできたのでお勧めです。</p>



<p>良ければ他の投稿もご覧ください！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/2835/">【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/2835/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者向け】JavaScriptでカレンダー作成【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/2749/</link>
					<comments>https://nyanblog2222.com/programming/javascript/2749/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 07 Jan 2021 04:29:22 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[カレンダー]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[作成]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[演習]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=2749</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/67.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは！今回はJavaScriptでカレンダーを作成してみました。カレンダー作成にはライブラリも存在しますが、勉学のために作成する方が多いかと思いますので今回は使用していません。自作すると、カスタマイズが容易であるこ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/2749/">【初心者向け】JavaScriptでカレンダー作成【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/67.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/67.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/67-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは！<br>今回はJavaScriptでカレンダーを作成してみました。<br>カレンダー作成にはライブラリも存在しますが、勉学のために作成する方が多いかと思いますので今回は使用していません。自作すると、カスタマイズが容易であることもメリットですね！</p>



<p>本記事の続きで<span class="marker-under-red">カレンダーに祝日も反映</span>させました！</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-related">

<a href="https://nyanblog2222.com/javascript/2835/" title="【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/68-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/68-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScriptで祝日対応のカレンダーを作成しました。内容：内閣府のWebサイトから取得したCSVファイルを読み込んで日付判定を行い、祝日を赤字表示させツールチップに祝日名を表示する。var request = new XMLHttpRequest();...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.09</div></div></div></div></a>
</div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-32" checked><label class="toc-title" for="toc-checkbox-32">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">フロー（箇条書き）</a></li><li><a href="#toc3" tabindex="0">HTML</a></li><li><a href="#toc4" tabindex="0">CSS</a></li><li><a href="#toc5" tabindex="0">JavaScript</a><ol><li><a href="#toc6" tabindex="0">コード</a></li><li><a href="#toc7" tabindex="0">解説</a><ol><li><a href="#toc8" tabindex="0">・グローバル変数の定義</a></li><li><a href="#toc9" tabindex="0">・初期表示</a></li><li><a href="#toc10" tabindex="0">・prev()、next()関数</a></li><li><a href="#toc11" tabindex="0">・カレンダー表示　showProcess関数</a></li><li><a href="#toc12" tabindex="0">・カレンダー作成　createProcess関数</a></li></ol></li></ol></li><li><a href="#toc13" tabindex="0">デモ</a></li><li><a href="#toc14" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずは<span class="marker-under-red">カレンダーに持たせる機能を決定</span>します。<br>今回は以下の機能を持たせることにしました。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-cyan-bluish-gray-border-color">
<ul class="wp-block-list">
<li>ヘッダーに年月を表示</li>



<li>ボタンで月の移動ができる</li>



<li>余白に先月、翌月の日付を灰色で表示</li>



<li>本日の日付に色をつける</li>
</ul>
</div>



<p>実際に作成したものですが、イメージ図はこちらです。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="600" height="376" src="https://nyanblog2222.com/wp-content/uploads/2021/01/20210107_01.png" alt="カレンダー作成イメージ図" class="wp-image-2760" srcset="https://nyanblog2222.com/wp-content/uploads/2021/01/20210107_01.png 600w, https://nyanblog2222.com/wp-content/uploads/2021/01/20210107_01-300x188.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p>また、次以降の投稿で祝日、スケジュール入力の機能を追加したいと考えています。</p>



<h2 class="wp-block-heading"><span id="toc2">フロー（箇条書き）</span></h2>



<p>次に箇条書きで処理フローを記述します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-cyan-bluish-gray-border-color">
<ol class="wp-block-list">
<li>日付オブジェクトを取得</li>



<li>年月を表示</li>



<li>カレンダーを作成
<ol class="wp-block-list">
<li>曜日の行を作成</li>



<li>1日が何曜日からはじまるか取得</li>



<li>当月が何行になるか算出</li>



<li>月曜日から2. で取得した行数分日付を設定</li>
</ol>
</li>



<li>カレンダーを表示</li>
</ol>
</div>



<p>こちらで実際にコーディングを進めていきます。</p>



<h2 class="wp-block-heading"><span id="toc3">HTML</span></h2>



<p>まずはHTMLを作成していきます。<br>作成しているのは、以下の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-cyan-bluish-gray-border-color">
<ol class="wp-block-list">
<li>年月表示のヘッダー</li>



<li>月移動のボタン</li>



<li>カレンダー</li>
</ol>
</div>



<pre class="wp-block-code html"><code>&lt;div class="wrapper"&gt;
    &lt;!-- xxxx年xx月を表示 --&gt;
    &lt;h1 id="header"&gt;&lt;/h1&gt;

    &lt;!-- ボタンクリックで月移動 --&gt;
    &lt;div id="next-prev-button"&gt;
        &lt;button id="prev" onclick="prev()"&gt;‹&lt;/button&gt;
        &lt;button id="next" onclick="next()"&gt;›&lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- カレンダー --&gt;
    &lt;div id="calendar"&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">CSS</span></h2>



<p>次にCSSでスタイルを決定します。<br>この辺りは好きなようにカスタマイズをしていただいて良いと思います！</p>



<p>ただ、JavaScriptで以下にクラスを設定しているので、ご注意ください。</p>



<p><span class="marker-under-red"><span class="marker-under-red">先月、翌月の日付：disabled</span><br>当日：today</span></p>



<pre class="wp-block-code css"><code>@charset "utf-8";

/*全体*/
.wrapper{
    max-width: 600px;
    margin: 0 auto;
    color: #666;
}
#header {
    text-align: center;
    font-size: 24px;
    width: 100%;
    margin: 1rem 0 0;
}

/*カレンダー*/
#calendar {
    text-align: center;
    width: 100%;
}
table {
    outline: 2px solid #ddd;
    border-collapse: collapse;
    width: 100%;
}
th {
    color: #000;
}
th, td {
    outline: 1px solid #ddd;
    padding-top: 10px;
    padding-bottom: 10px;
    text-align: center;
}
/*日曜日*/
td:first-child {
    color: red;
}
/*土曜日*/
td:last-child {
    color: blue;
}
/*前後月の日付*/
td.disabled {
    color: #ccc;
}
/*本日*/
td.today {
    background-color: #D65E72;
    color: #fff;
}

/*ボタン*/
#next-prev-button {
    position: relative;
}
#next-prev-button button{
    cursor: pointer;
    background: #B78D4A;
    color: #fff;
    border: 1px solid #B78D4A;
    border-radius: 4px;
    font-size: 1rem;
    padding: 0.5rem 2rem;
    margin: 1rem 0;
}
#next-prev-button button:hover{
    background-color: #D4BB92;
    border-color: #D4BB92;
}
#prev {
    float: left;
}
#next {
    float: right;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc5">JavaScript</span></h2>



<p>JavaScriptで実際にカレンダーを作成、表示していきます。</p>



<h3 class="wp-block-heading"><span id="toc6">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。<br>コピペも可能です！</p>



<pre class="wp-block-code javascript"><code>const week = &#91;"日", "月", "火", "水", "木", "金", "土"];
const today = new Date();
// 月末だとずれる可能性があるため、1日固定で取得
var showDate = new Date(today.getFullYear(), today.getMonth(), 1);

// 初期表示
window.onload = function () {
    showProcess(today, calendar);
};
// 前の月表示
function prev(){
    showDate.setMonth(showDate.getMonth() - 1);
    showProcess(showDate);
}

// 次の月表示
function next(){
    showDate.setMonth(showDate.getMonth() + 1);
    showProcess(showDate);
}

// カレンダー表示
function showProcess(date) {
    var year = date.getFullYear();
    var month = date.getMonth();
    document.querySelector('#header').innerHTML = year + "年 " + (month + 1) + "月";

    var calendar = createProcess(year, month);
    document.querySelector('#calendar').innerHTML = calendar;
}

// カレンダー作成
function createProcess(year, month) {
    // 曜日
    var calendar = "&lt;table&gt;&lt;tr class='dayOfWeek'&gt;";
    for (var i = 0; i &lt; week.length; i++) {
        calendar += "&lt;th&gt;" + week&#91;i] + "&lt;/th&gt;";
    }
    calendar += "&lt;/tr&gt;";

    var count = 0;
    var startDayOfWeek = new Date(year, month, 1).getDay();
    var endDate = new Date(year, month + 1, 0).getDate();
    var lastMonthEndDate = new Date(year, month, 0).getDate();
    var row = Math.ceil((startDayOfWeek + endDate) / week.length);

    // 1行ずつ設定
    for (var i = 0; i &lt; row; i++) {
        calendar += "&lt;tr&gt;";
        // 1colum単位で設定
        for (var j = 0; j &lt; week.length; j++) {
            if (i == 0 &amp;&amp; j &lt; startDayOfWeek) {
                // 1行目で1日まで先月の日付を設定
                calendar += "&lt;td class='disabled'&gt;" + (lastMonthEndDate - startDayOfWeek + j + 1) + "&lt;/td&gt;";
            } else if (count &gt;= endDate) {
                // 最終行で最終日以降、翌月の日付を設定
                count++;
                calendar += "&lt;td class='disabled'&gt;" + (count - endDate) + "&lt;/td&gt;";
            } else {
                // 当月の日付を曜日に照らし合わせて設定
                count++;
                if(year == today.getFullYear()
                  &amp;&amp; month == (today.getMonth())
                  &amp;&amp; count == today.getDate()){
                    calendar += "&lt;td class='today'&gt;" + count + "&lt;/td&gt;";
                } else {
                    calendar += "&lt;td&gt;" + count + "&lt;/td&gt;";
                }
            }
        }
        calendar += "&lt;/tr&gt;";
    }
    return calendar;
}</code></pre>



<h3 class="wp-block-heading"><span id="toc7">解説</span></h3>



<p>先述したコードに対して細かく解説していきます！<br>結構長くなってしまったので、不要な方は飛ばしてください。</p>



<h4 class="wp-block-heading"><span id="toc8">・グローバル変数の定義</span></h4>



<pre class="wp-block-code javascript"><code>const week = &#91;"日", "月", "火", "水", "木", "金", "土"];</code></pre>



<p>曜日を格納した配列を定義しています。<br><span class="marker-under-blue">変更予定がないので、定数（const）で作成</span>しています。</p>



<pre class="wp-block-code javascript"><code>const today = new Date();
var showDate = new Date(today.getFullYear(), today.getMonth(), 1);</code></pre>



<p>・本日の日付オブジェクトを定数で宣言<br>・表示する日付オブジェクトを宣言</p>



<p>表示する日付オブジェクトは初期化では”today”の年月＋1日固定で作成します。</p>



<p><span class="marker-under">Q：なぜ”today”をそのまま使用しないか</span><br>A：前の月、次の月表示で”getMonth()”に+-1を行っていますが、末日だと先々月、もしくは翌々日になることがあります。</p>



<h4 class="wp-block-heading"><span id="toc9">・初期表示</span></h4>



<pre class="wp-block-code javascript"><code>window.onload = function () {
    showProcess(today, calendar);
};</code></pre>



<p>当日の日付オブジェクトを使用して、showProcess関数を呼び出して初期表示を行います。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {・・・};</code></pre>



<p>↑は<span class="marker-under-blue">HTMLが読み込まれた直後に呼び出される関数です。</span></p>



<h4 class="wp-block-heading"><span id="toc10">・prev()、next()関数</span></h4>



<pre class="wp-block-code javascript"><code>// 前の月表示
function prev(){
    showDate.setMonth(showDate.getMonth() - 1);
    showProcess(showDate);
}

// 次の月表示
function next(){
    showDate.setMonth(showDate.getMonth() + 1);
    showProcess(showDate);
}</code></pre>



<p>「＜」クリックでprev()、「＞」クリックでnext()の関数がそれぞれ呼び出されます。</p>



<p>prev()関数の場合はshowDateオブジェクトに1月分減算後、<br>next()関数の場合はshowDateオブジェクトに1月分加算後にshowProcess関数を呼び出してカレンダーを表示します。</p>



<h4 class="wp-block-heading"><span id="toc11">・カレンダー表示　showProcess関数</span></h4>



<p>引数：date（表示するDateオブジェクト）</p>



<pre class="wp-block-code javascript"><code>var year = date.getFullYear();
var month = date.getMonth();
document.querySelector('#header').innerHTML = year + "年 " + (month + 1) + "月";</code></pre>



<p>ヘッダー（id=&#8221;#header&#8221;）に年月を表示させます。<br>getMonth()は0始まりのため、1月の場合、0が取得されます。<br>そのため、3行目では (month + 1) で月を設定します。</p>



<pre class="wp-block-code"><code>var calendar = createProcess(year, month);
document.querySelector('#calendar').innerHTML = calendar;</code></pre>



<p>createProcess関数でカレンダーを作成し、id=&#8221;#calendar&#8221;にカレンダーを設定します。</p>



<h4 class="wp-block-heading"><span id="toc12">・カレンダー作成　createProcess関数</span></h4>



<p>引数：year（年）、month（月）<br>戻り値：作成したカレンダー</p>



<pre class="wp-block-code"><code>// 曜日
var calendar = "&lt;table&gt;&lt;tr class='dayOfWeek'&gt;";
for (var i = 0; i &lt; week.length; i++) {
    calendar += "&lt;th&gt;" + week&#91;i] + "&lt;/th&gt;";
}
calendar += "&lt;/tr&gt;";</code></pre>



<p>定数”week”を使用してカレンダー上部に表示させる、曜日を設定します。</p>



<pre class="wp-block-code"><code>var count = 0;
var startDayOfWeek = new Date(year, month, 1).getDay();
var endDate = new Date(year, month + 1, 0).getDate();
var lastMonthEndDate = new Date(year, month, 0).getDate();
var row = Math.ceil((startDayOfWeek + endDate) / week.length);</code></pre>



<p>日付を設定するのに必要な変数を定義します。<br>それぞれの変数は以下の内容を定義しています。</p>



<p>count：日付のカウント<br>startDayOfWeek：表示する月の1日の曜日<br>endDate：表示する月の末日<br>lastMonthEndDate：表示する先月の末日<br>row：カレンダー（日付部分）の行数</p>



<pre class="wp-block-code"><code>// 1行ずつ設定
for (var i = 0; i &lt; row; i++) {
    calendar += "&lt;tr&gt;";
    // 1colum単位で設定
    for (var j = 0; j &lt; week.length; j++) {
        if (i == 0 &amp;&amp; j &lt; startDayOfWeek) {
            // 1行目で1日まで先月の日付を設定
            calendar += "&lt;td class='disabled'&gt;"
                     + (lastMonthEndDate - startDayOfWeek + j + 1) + "&lt;/td&gt;";
        } else if (count &gt;= endDate) {
            // 最終行で最終日以降、翌月の日付を設定
            count++;
            calendar += "&lt;td class='disabled'&gt;" + (count - endDate) + "&lt;/td&gt;";
        } else {
            // 当月の日付を曜日に照らし合わせて設定
            count++;
            if(year == today.getFullYear()
              &amp;&amp; month == (today.getMonth())
              &amp;&amp; count == today.getDate()){
                calendar += "&lt;td class='today'&gt;" + count + "&lt;/td&gt;";
            } else {
                calendar += "&lt;td&gt;" + count + "&lt;/td&gt;";
            }
        }
    }
    calendar += "&lt;/tr&gt;";
}</code></pre>



<p>始めのfor文は行単位、2つ目のfor文はカラム（日付）単位で回します。</p>



<p>3行目、26行目ではtrタグで括っています。</p>



<p>6行目の条件は「1行目、かつ、1日の曜日未満」の場合に8、9行目の処理を行います。<br><span class="marker-under-blue">その場合にクラス「disabled」を付与して日付を設定します。</span><br>計算式は例で実際に当てはめてみましょう。</p>



<p>例：2021/01<br>lastMonthEndDate = 31<br>startDayOfWeek = 5 （金曜日）<br>日曜日：31 &#8211; 5 + 0 + 1 = 27<br>月曜日：31 &#8211; 5 + 1 + 1 = 28</p>



<p>10行目の条件は当月の最終日以降、翌月の日付を設定します。<br><span class="marker-under-blue">上記同様、<span class="marker-under-blue">クラス「disabled」を付与して日付を設定します。</span></span><span class="marker-under-blue"></span></p>



<p>それ以外の14行目～24行目の処理は当月の日付1日から末日まで入ります。<br>また、17行目～19行目の条件は本日の日付かどうかチェックしており、<span class="marker-under-blue">本日の場合はクラス「today」を付与しています。</span></p>



<h2 class="wp-block-heading"><span id="toc13">デモ</span></h2>



<p><a class="link" href="https://nyanblog2222.com/demo/calender1/">こちらがデモページ</a>になります。<br>初期表示は当月で表示され、本日が赤く表示されていると思います。</p>



<p>また、＜＞のボタンをクリックすることで月の移動ができますので、お試しください♪</p>



<h2 class="wp-block-heading"><span id="toc14">最後に</span></h2>



<p>いかがでしたでしょうか。<br>ライブラリを使わなくても意外と簡単に実装ができました！</p>



<p>この後、<span class="marker-under-red">カレンダーに祝日対応してみました</span>ので、<br>良ければこちらの投稿もご覧ください！</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-related">

<a href="https://nyanblog2222.com/javascript/2835/" title="【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/68-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/68-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/68-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【初心者向け】JavaScriptで祝日対応のカレンダー作成【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScriptで祝日対応のカレンダーを作成しました。内容：内閣府のWebサイトから取得したCSVファイルを読み込んで日付判定を行い、祝日を赤字表示させツールチップに祝日名を表示する。var request = new XMLHttpRequest();...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.01.09</div></div></div></div></a>
</div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a href="https://nyanblog2222.com/programming/javascript/4717/" title="【サンプル】JavaScriptのコードまとめリンク集" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/85-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/85-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/85-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【サンプル】JavaScriptのコードまとめリンク集</div><div class="blogcard-snippet internal-blogcard-snippet">本記事では当ブログで上げているJavaScript記事のまとめリンク集になります。目次でカテゴリ分けをしているので、気になる内容がありましたら目次から飛んでみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2022.09.01</div></div></div></div></a>
</div>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/2749/">【初心者向け】JavaScriptでカレンダー作成【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/2749/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript/JS】Promiseの使い方(then/resolve/reject)</title>
		<link>https://nyanblog2222.com/programming/javascript/1627/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1627/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 18 Jul 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Promise]]></category>
		<category><![CDATA[then]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1627</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/75.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/75.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回は非同期処理で使うPromiseについて、使い方を紹介していきます。 Promiseは同期、非同期処理の考え方が分からないとチンプンカンプンになってしまうので、よく分からない方は先にこちらの記事をご覧くだ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1627/">【JavaScript/JS】Promiseの使い方(then/resolve/reject)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/75.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/75.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/75-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回は非同期処理で使う<strong><span style="color: #b78d4a;" class="has-inline-color">Promise</span></strong>について、使い方を紹介していきます。</p>



<p>Promiseは<strong><span style="color: #b78d4a;" class="has-inline-color">同期、非同期処理</span></strong>の考え方が分からないとチンプンカンプンになってしまうので、よく分からない方は先にこちらの記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/JavaScript/984/" title="【JavaScript】非同期処理と処理の順番について【初心者・入門】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/78-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】非同期処理と処理の順番について【初心者・入門】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScriptは同期的でシングルスレッドの処理で実行されていますが、非同期処理が可能な言語です。ここでは、非同期処理と同期処理・スレッドについてまず説明し、その後遅延処理について説明していきます。同期処理はプログラムの記述順に1つずつ実行されます。そのため、次の処理は前の処理が終わらないと実行するこ...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.02</div></div></div></div></a>
</div></figure>



<p>Promiseは<strong><span style="color: #b78d4a;" class="has-inline-color">非同期処理が完了した後に結果を返して</span></strong>います。<br>それでは、基本的な記述方法から始めていきましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-34" checked><label class="toc-title" for="toc-checkbox-34">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">基本的な「Promise」の書き方</a></li><li><a href="#toc2" tabindex="0">「then」を使ってコールバック処理を実行する方法</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">基本的な「Promise」の書き方</span></h2>



<p>まずは、Promiseオブジェクトを生成することです。<br><strong><span style="color: #b78d4a;" class="has-inline-color">newでPromiseのオブジェクト</span></strong>を、objに設定します。</p>



<pre class="wp-block-code javascript"><code>var obj = new Promise(function(resolve, reject) {
    resolve("成功");
});</code></pre>



<p>また、Promiseの<strong><span style="color: #b78d4a;" class="has-inline-color">引数の関数では、二つの関数を引数として</span></strong>取ることができ、それぞれ以下の状態での処理を実施することができます。</p>



<p>・resolve：<strong><span style="color: #b78d4a;" class="has-inline-color">処理成功</span></strong>時の処理<br>・reject：<strong><span style="color: #b78d4a;" class="has-inline-color">処理失敗</span></strong>時の処理</p>



<h2 class="wp-block-heading"><span id="toc2">「then」を使ってコールバック処理を実行する方法</span></h2>



<p>続いて、Promiseでthenを使用してコールバック処理を実行してみましょう。</p>



<pre class="wp-block-code java"><code>var promise_obj = new Promise(function(resolve, reject) {
    resolve();
});

promise_obj.then(function(success, failure) {
    console.log("こっちが後に出力されるよ");
});

console.log("こっちが先に出力されるよ");</code></pre>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">then関数</span></strong>はPromiseが返され、処理が成功もしくは失敗した場合にコールバック関数を取ります。</p>



<p>また、<strong><span style="color: #b78d4a;" class="has-inline-color">Promise.then()</span></strong>は非同期処理のため、6行目の方が先に処理として登録されますが、8行目の方が先に実行されます。<br>このように、非同期処理では時間がかかる処理が終わる前に後の処理が完了することがあります。</p>



<p>いかがでしたでしょうか。<br>今回はPromiseを使って基本的な非同期処理の制御方法について、ご紹介していきました。<br>他にもさまざまな関数が使用できるので、良かったら試してみてください。</p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1627/">【JavaScript/JS】Promiseの使い方(then/resolve/reject)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1627/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】Vue.jsの基本（1）【入門】</title>
		<link>https://nyanblog2222.com/programming/javascript/1638/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1638/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 07 Jul 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[オプション]]></category>
		<category><![CDATA[マスタッシュ]]></category>
		<category><![CDATA[初心者]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1638</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/74.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/74.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はVue.jsの基本的な使い方をご紹介します。実践には及びませんが、初心者の方にはおススメの記事になります。 目次 Vue.jsとはVueインスタンスを作成new Vueでインスタンスを作成オプションel [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1638/">【JavaScript】Vue.jsの基本（1）【入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/74.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/74.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/74-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はVue.jsの基本的な使い方をご紹介します。<br>実践には及びませんが、初心者の方にはおススメの記事になります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-36" checked><label class="toc-title" for="toc-checkbox-36">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Vue.jsとは</a></li><li><a href="#toc2" tabindex="0">Vueインスタンスを作成</a><ol><li><a href="#toc3" tabindex="0">new Vueでインスタンスを作成</a></li><li><a href="#toc4" tabindex="0">オプション</a><ol><li><a href="#toc5" tabindex="0">el : element</a></li><li><a href="#toc6" tabindex="0">data</a></li><li><a href="#toc7" tabindex="0">methods</a></li><li><a href="#toc8" tabindex="0">computed</a></li><li><a href="#toc9" tabindex="0">watch</a></li></ol></li></ol></li><li><a href="#toc10" tabindex="0">データ表示：マスタッシュ構文</a></li><li><a href="#toc11" tabindex="0">ひとこと</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Vue.jsとは</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">JavaScriptのフレームワーク</span></strong>の1つでUI（ユーザインタフェース）を構築するフロントエンドアプリケーションの開発で使用されています。<br>また、<strong><span style="color:#b78d4a" class="has-inline-color">SPA（Single Page Application）</span></strong>開発に使われることが多いフレームワークになります。</p>



<p>SPAとは<strong><span style="color:#b78d4a" class="has-inline-color">単一ページでコンテンツを切り替えるWebアプリケーション</span></strong>を指していますが、以前はFlashが多くの方で使用されていました。<br>ご存じの方も多いと思いますが、Flashは2020年末にサポートが終了することもあり、Vueを使用するようになった開発者も多いと思います。</p>



<h2 class="wp-block-heading"><span id="toc2">Vueインスタンスを作成</span></h2>



<h3 class="wp-block-heading"><span id="toc3">new Vueでインスタンスを作成</span></h3>



<p>まずは、Vueオブジェクトのインスタンスを作成します。<br>コンストラクタで引数にオプションを設定することができます。</p>



<h3 class="wp-block-heading"><span id="toc4">オプション</span></h3>



<h4 class="wp-block-heading"><span id="toc5">el : element</span></h4>



<p>idやclassを指定して、どのHTMLとVueインスタンスを紐づけるか、指定できます。</p>



<pre class="wp-block-code html"><code>&lt;div id="sample">&lt;/div></code></pre>



<pre class="wp-block-code javascript"><code>new Vue({
  el : "#sample"
})</code></pre>



<h4 class="wp-block-heading"><span id="toc6">data</span></h4>



<p>Vueで使用するデータを定義することができます。</p>



<pre class="wp-block-code html"><code>&lt;div id="sample">
  &lt;p>こんにちは、{{ name }}さん&lt;/p>
&lt;/div></code></pre>



<pre class="wp-block-code javascript"><code>new Vue({
  el: "#sample",
  data: {
    name: "山田　花子"
  }
})</code></pre>



<p>// 処理結果<br>こんにちは、山田　花子さん</p>



<h4 class="wp-block-heading"><span id="toc7">methods</span></h4>



<p>Vueで使用する関数を定義できます。</p>



<pre class="wp-block-code html"><code>&lt;div id="app">
  &lt;p> {{count}}回&lt;/p>
  &lt;button v-on:click="count_up">カウント&lt;/button>
&lt;/div></code></pre>



<pre class="wp-block-code javascript"><code>new Vue({
  el: "#app",
  data: {
    count:0
  },
  methods: {
    count_up: function() {
      this.count++;
    }
  }
})</code></pre>



<p>実行画面でボタンをクリックするたびに「1回&#8230;2回&#8230;」とカウントが上がっていきます。</p>



<h4 class="wp-block-heading"><span id="toc8">computed</span></h4>



<p>dataオプションの値を使用して、関数で別の計算をする。<br><strong><span style="color:#b78d4a" class="has-inline-color">計算結果がキャッシュに格納</span></strong>されるため、<strong><span style="color:#b78d4a" class="has-inline-color">処理が高速</span></strong>なのが特徴。</p>



<h4 class="wp-block-heading"><span id="toc9">watch</span></h4>



<p>dataオプションの特定の値を監視して、変更時に関数を実行する。</p>



<h2 class="wp-block-heading"><span id="toc10">データ表示：マスタッシュ構文</span></h2>



<p>先ほどのdataオプションの項目にもありましたが、Vueでデータを表示するのにマスタッシュを使用することで表示することができます。</p>



<p>例：<br>&lt;p&gt;こんにちは、<strong><span style="color:#b78d4a" class="has-inline-color">{{</span></strong> name <strong><span style="color:#b78d4a" class="has-inline-color">}}</span></strong>さん&lt;/p&gt;</p>



<p>マスタッシュとは、口ひげの意味があり、「{」を横にすると口ひげに見えることからこの名が付いています。</p>



<h2 class="wp-block-heading"><span id="toc11">ひとこと</span></h2>



<p>いかがでしたでしょうか。<br>Vueは最近JavaScriptで特に注目を集めているフレームワークの一つです。</p>



<p>良かったら次回の記事もご覧ください。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1638/">【JavaScript】Vue.jsの基本（1）【入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1638/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】スクロール中にヘッダーを固定する方法【簡単・コピペOK】</title>
		<link>https://nyanblog2222.com/programming/javascript/1630/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1630/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 04 Jul 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[スクロール]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1630</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/73.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/73.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。ホームページを閲覧している中で、始めはヘッダーが固定されていなかったのに、途中から常に規定の位置で固定されているページをお見掛けしたことはありませんか？ 今回はスクロール中にヘッダーナビゲーションを固定させる [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1630/">【JavaScript】スクロール中にヘッダーを固定する方法【簡単・コピペOK】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/73.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/73.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/73-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。ホームページを閲覧している中で、始めはヘッダーが固定されていなかったのに、途中から常に規定の位置で固定されているページをお見掛けしたことはありませんか？</p>



<p>今回はスクロール中にヘッダーナビゲーションを固定させる方法をご紹介していきたいと思います。</p>



<p>また、本記事のコードではJQueryを使用しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-38" checked><label class="toc-title" for="toc-checkbox-38">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモページ</a></li><li><a href="#toc5" tabindex="0">ひとこと</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>HTMLでは、トップ画像とナビゲーション、サイトの長さを出すためにsection・footer要素を置いています。</p>



<pre class="wp-block-code html"><code>&lt;div id="top_visual">&lt;/div>
&lt;nav>
    &lt;div class="wrapper">
        &lt;ul>
            &lt;li class="item">&lt;a href="#news">News&lt;/a>&lt;/li>
            &lt;li class="item">&lt;a href="#about">About&lt;/a>&lt;/li>
            &lt;li class="item">&lt;a href="#blog">Blog&lt;/a>&lt;/li>
            &lt;li class="item">&lt;a href="#contact">Contact&lt;/a>&lt;/li>
        &lt;/ul>
    &lt;/div>
&lt;/nav>
&lt;section id="news">
    &lt;div class="wrapper">
        &lt;h1>News&lt;/h1>
        &lt;p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p>
    &lt;/div>
&lt;/section>
&lt;section id="about">
    &lt;div class="wrapper">
        &lt;h1>About&lt;/h1>
        &lt;p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p>
    &lt;/div>
&lt;/section>
&lt;section id="blog">
    &lt;div class="wrapper">
        &lt;h1>Blog&lt;/h1>
        &lt;p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p>
    &lt;/div>
&lt;/section>
&lt;section id="contact">
    &lt;div class="wrapper">
        &lt;h1>Contact&lt;/h1>
        &lt;p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p>
    &lt;/div>
&lt;/section>
&lt;footer>
    &lt;p>© 2020 nyanblog&lt;/p>
&lt;/footer></code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSS</span></h2>



<p>CSSで見た目を整えていきます。<br>また、JavaScriptでつけ外しをする「nav.fixed」でヘッダーを固定しています。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

*{
    margin: 0;
}

#top_visual {
    background: url(../img/visual.jpg) center center / cover no-repeat;
    height: 480px;
}

nav {
    background: #fff;
    width: 100%;
}

nav.fix {
    position: fixed;
    right: 0;
    top: 0;
}

.wrapper {
    margin: 0 auto;
    max-width: 100%;
}

nav ul {
    justify-content: flex-end;
    display: flex;
    list-style: none;

}

.item {
    margin: 0 2em;
    padding: 17px 0;
}

.item a {
    color: #B78D4A;
    text-decoration: none;
}

.item a:hover{
    color: #D5BC94;
}

h1 {
    font-size: 1.25rem;
    padding: 2rem 0;
    color: #B78D4A;
    font-weight: normal;
}

p {
    line-height: 2;
    padding-bottom: 4rem;
    color: #555A60;
}

section{
    background-color: #F0F0F0;
    padding: 2em;

}

section .wrapper{
    max-width: 800px;
}

footer {
    background-color: #B78D4A;
    padding: 2em;
}

footer p {
    font-size: .8em;
    color: #fff;
    max-width: 800px;
    padding: 0;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>JavaScriptでスクロールイベントするたびに、<strong><span style="color:#b78d4a" class="has-inline-color">スクロールの位置とnav要素の位置と比較</span></strong>しています。<br>スクロールの位置を超えると、<strong><span style="color:#b78d4a" class="has-inline-color">nav要素に「fix」クラスを付与</span></strong>し、上部に固定させます。</p>



<pre class="wp-block-code javascript"><code>$(function() {
    var pos = $("nav").offset().top;
    var height = $("nav").outerHeight();
    $(window).scroll(function () {
        if ($(this).scrollTop() > pos) {
            $("nav").addClass("fix");
            $("body").css("padding-top", height);
        } else {
            $("nav").removeClass("fix");
            $("body").css("padding-top", 0);
        }
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモページ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/scroll_event/" target="_blank" aria-label="undefined (opens in a new tab)">デモページはこちら</a></strong>です。<br>実際にスクロールで動かしてヘッダーが固定されることを確認してみてください。</p>



<h2 class="wp-block-heading"><span id="toc5">ひとこと</span></h2>



<p>いかがでしたでしょうか。<br>今回はスクロールイベントを利用して、ヘッダーナビゲーションを固定させる方法をご紹介しました。</p>



<p>簡単にコピペで実装することができますので、良かったら試してみてください。<br>本記事をご覧くださり、ありがとうございました！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1630/">【JavaScript】スクロール中にヘッダーを固定する方法【簡単・コピペOK】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1630/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JQuery】遅延実行でイベントを発生させる方法</title>
		<link>https://nyanblog2222.com/programming/javascript/1620/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1620/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 02 Jul 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[clearInterval]]></category>
		<category><![CDATA[clearTimeout]]></category>
		<category><![CDATA[setInterval]]></category>
		<category><![CDATA[setTimeout]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1620</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/72.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/72.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回は一定時間後に処理を実行することができる、遅延実行についてご紹介します。 目次 setTimeout・clearTimeout関数setInterval・clearInterval関数setTimeout [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1620/">【JQuery】遅延実行でイベントを発生させる方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/72.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/72.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/72-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回は一定時間後に処理を実行することができる、遅延実行についてご紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-40" checked><label class="toc-title" for="toc-checkbox-40">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">setTimeout・clearTimeout関数</a></li><li><a href="#toc2" tabindex="0">setInterval・clearInterval関数</a></li><li><a href="#toc3" tabindex="0">setTimeoutとsetIntervalの違い</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">setTimeout・clearTimeout関数</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">setTimeout関数</span></strong>は一定時間後に処理を実行する時に使用する関数です。<br>JavaScriptでは、基本的に同期（上から順番に）処理していきますが、<strong><span style="color:#b78d4a" class="has-inline-color">明示的に時間をずらして実行したい場合、この関数を利用</span></strong>します。</p>



<p>こちらの例を見てみましょう。<br>この<strong><span style="color:#b78d4a" class="has-inline-color">スクリプトを実行すると、1秒後に</span></strong>コンソール画面に「実行するよ」と表示されます。</p>



<pre class="wp-block-code javascript"><code>setTimeout(function () {
    console.log("実行するよ");
}, 1000);</code></pre>



<p>また、このようにすると繰り返し処理を実行することもできます。</p>



<pre class="wp-block-code javascript"><code>var cnt = 0;
var countUp = function () {
    cnt++;
    console.log(cnt);
    var timeout = setTimeout(countUp, 1000);
}
countUp();</code></pre>



<p>繰り返しsetTimeout関数を使用すると、無限処理になってしまうので、それを止めるために<strong><span style="color:#b78d4a" class="has-inline-color">clearTimeout関数</span></strong>を使用します。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">clearTimeout関数</span></strong>は、<strong><span style="color:#b78d4a" class="has-inline-color">setTimeout関数で宣言した処理を解除するための関数</span></strong>です。</p>



<pre class="wp-block-code javascript"><code>var cnt = 0;
var countUp = function () {
    cnt++;
    console.log(cnt);
    var timeout = setTimeout(countUp, 1000);

    if (cnt > 4) {
        clearTimeout(timeout);
    }
}
countUp();</code></pre>



<p>このように<strong><span style="color:#b78d4a" class="has-inline-color">clearTimeout関数</span></strong>を使用することで、指定の条件で<strong><span style="color:#b78d4a" class="has-inline-color">繰り返し処理を終了</span></strong>することができます。</p>



<h2 class="wp-block-heading"><span id="toc2">setInterval・clearInterval関数</span></h2>



<p>先ほど、setTimeout関数で繰り返しの遅延実行を行いましたが似たような関数でsetInterval関数があります。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">setInterval関数</span></strong>は、<strong><span style="color:#b78d4a" class="has-inline-color">一定時間ごとに処理を実行</span></strong>することができます。</p>



<p>一方、<strong><span style="color:#b78d4a" class="has-inline-color">clearInterval関数</span></strong>は<strong><span style="color:#b78d4a" class="has-inline-color">setInterval関数で宣言した処理を解除する関数</span></strong>です。<br>こちらが使用例になります。<br>カウントが5になるまで実行し、超えると処理を止めるようにしています。</p>



<pre class="wp-block-code javascript"><code>var cnt = 0;
var countUp = function () {
    cnt++;
    console.log(cnt);
}
var interval = setInterval(function () {
    countUp();
    if (cnt > 4) {
        clearInterval(interval);
    }
}, 1000);</code></pre>



<h2 class="wp-block-heading"><span id="toc3">setTimeoutとsetIntervalの違い</span></h2>



<p>ぱっと見では、setTimeout関数とsetInterval関数の違いはなさそうですが、時間間隔に少し違いがあります。</p>



<p>・<strong><span style="color:#b78d4a" class="has-inline-color">setTimeout関数</span></strong>：<strong><span style="color:#b78d4a" class="has-inline-color">処理終了時点</span></strong>から次に実行するタイミングを指定</p>



<p>・<strong><span style="color:#b78d4a" class="has-inline-color">setInterval関数</span></strong>：<strong><span style="color:#b78d4a" class="has-inline-color">処理開始時点</span></strong>から何秒間隔で実行するかを指定</p>



<p>そのため、setInterval関数では、間隔の秒数を超過した処理が行われた場合、時間の感覚がずれる可能性があります。<br>用途に応じて、関数を使い分けるのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p><strong><span style="color:#b78d4a" class="has-inline-color">setTmeout関数</span></strong>では、<strong><span style="color:#b78d4a" class="has-inline-color">一定時間後</span></strong>に処理。<br><strong><span style="color:#b78d4a" class="has-inline-color">setInterval関数</span></strong>では、<strong><span style="color:#b78d4a" class="has-inline-color">一定時間毎</span></strong>に処理。</p>



<p>両者の違いは<strong><span style="color:#b78d4a" class="has-inline-color">間隔時間の開始時点</span></strong>が異なることをご紹介していきました。<br>遅延関数を使用したい場合、よく使う関数になると思いますので、参考にしてみてください。</p>



<p>良かったら次回の記事も見てみてくださいね！<br>それでは、本記事をご覧くださり、ありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1620/">【JQuery】遅延実行でイベントを発生させる方法</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1620/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</title>
		<link>https://nyanblog2222.com/programming/javascript/1566/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1566/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 30 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[getJSON]]></category>
		<category><![CDATA[JSON]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1566</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/82.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/82.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。前回はJSONデータの基本操作方法を紹介しました。詳しくは、こちらからご覧ください。 今回はJQueryを使用したJSONファイルの読み込み方になります。コピペでも実装可能なので、宜しければご覧ください。 目 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1566/">【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/82.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/82.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回はJSONデータの基本操作方法を紹介しました。<br>詳しくは、こちらからご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1526" title="【JSON入門】JSONデータの参照・追加（更新）・削除" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONデータの参照・追加（更新）・削除</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは。前回はJSONファイルとは何かというのを紹介していきました。詳しくは、こちらからご覧ください。 今回はJSONデータの扱い方の続編となります。宜しければご覧ください。 操作するデータ こちらが今回サンプルのデータです。json_...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.28</div></div></div></div></a>
</div></figure>



<p>今回は<strong><span style="color:#b78d4a" class="has-inline-color">JQueryを使用したJSONファイルの読み込み方</span></strong>になります。<br>コピペでも実装可能なので、宜しければご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-42" checked><label class="toc-title" for="toc-checkbox-42">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">フォルダ構成</a></li><li><a href="#toc2" tabindex="0">JSONファイルの用意</a></li><li><a href="#toc3" tabindex="0">JSONファイルの読み込み</a><ol><li><a href="#toc4" tabindex="0">$.ajax()</a><ol><li><a href="#toc5" tabindex="0">読み込みの設定</a></li><li><a href="#toc6" tabindex="0">読み込み後の処理</a></li><li><a href="#toc7" tabindex="0">注意点</a></li></ol></li><li><a href="#toc8" tabindex="0">$.getJSON()</a></li></ol></li><li><a href="#toc9" tabindex="0">読み込みに失敗する場合</a><ol><li><a href="#toc10" tabindex="0">コンソール画面でエラーを確認</a></li><li><a href="#toc11" tabindex="0">JSONファイルのミスを防ぐWEBツール</a></li><li><a href="#toc12" tabindex="0">JSON変換ツール</a></li></ol></li><li><a href="#toc13" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">フォルダ構成</span></h2>



<p>今回使用するファイルのフォルダ構成はこちらです。</p>



<pre class="wp-block-code plaintext"><code>フォルダ構成
│
├─index.html
│    htmlファイル
├─script.js
│    javascript(JQuery)ファイル
└─data.json
     jsonファイル</code></pre>



<h2 class="wp-block-heading"><span id="toc2">JSONファイルの用意</span></h2>



<p>まずは読み込むJSONファイルを準備します。<br>ファイルの場所は、ローカルファイルではセキュリティの問題で絶対パスで設定できないため、相対パスで簡単に設定できる場所に配置してください。</p>



<p>絶対パス：C:\Users\Guest\AppData&#8230;やhttps://nyanblog2222.comなどルートディレクトリからやURLなど、<strong><span style="color:#b78d4a" class="has-inline-color">目的地までの経路を頭から最後まで</span></strong>記述</p>



<p>相対パス：../javascript/script.js など、<strong><span style="color:#b78d4a" class="has-inline-color">現在地から目的地までの経路</span></strong>を記述</p>



<p>こちらがファイルの内容です。</p>



<p>ファイル：data.json</p>



<pre class="wp-block-code json"><code>&#91;
    {
        "name": "yamada",
        "school_year": 2,
        "test": {
            "japanese": 65,
            "english": 80
        }
    },
    {
        "name": "hayashi",
        "school_year": 2,
        "test": {
            "japanese": 45,
            "english": 95
        }
    },
    {
        "name": "sato",
        "school_year": 1,
        "test": {
            "japanese": 75,
            "english": 35
        }
    }
]</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JSONファイルの読み込み</span></h2>



<h3 class="wp-block-heading"><span id="toc4">$.ajax()</span></h3>



<p>$.ajax()での読み込み方法です。</p>



<pre class="wp-block-code javascript"><code>$.ajax({
    // 読み込みの設定
    type: "GET",
    url: "data.json", // ファイルパス（相対パス）
    dataType: "json", // ファイル形式
    async: false // 非同期通信フラグ
}).then(
    function (json) {
        // 読み込み成功時の処理
        console.log("読み込みに成功しました");
        console.log(json)
        json.forEach(function (data) {
            console.log(data)
        });
    },
    function () {
        // 読み込み失敗時の処理
        console.log("読み込みに失敗しました");
    }
);</code></pre>



<h4 class="wp-block-heading"><span id="toc5">読み込みの設定</span></h4>



<p>1～6行目で<span style="color:#b78d4a" class="has-inline-color"><strong>jsonを読み込む際の設定</strong></span>を記述しています。<br>ファイル名やファイルの配置を変更する場合、4行目の&#8221;data.json&#8221;を変更してください。<br>また、6行目の<strong><span style="color:#b78d4a" class="has-inline-color">async</span></strong>では、非同期通信フラグを設定しています。<br>デフォルトではtrueですが<strong><span style="color:#b78d4a" class="has-inline-color">falseに設定すると、読み込みが終わるまで他の処理を進めることができません</span></strong>。逆に読み込みが終わってる次の処理へ行いたい対場合、falseにした方が良いです。</p>



<h4 class="wp-block-heading"><span id="toc6">読み込み後の処理</span></h4>



<p>7行目で<strong><span style="color:#b78d4a" class="has-inline-color">then(成功,失敗)</span></strong>の処理が分かれています。<br>8～15行目では<strong><span style="color:#b78d4a" class="has-inline-color">読み込み成功時の処理</span></strong>を、16～19行目では<strong><span style="color:#b78d4a" class="has-inline-color">読み込み失敗時の処理</span></strong>を記述しています。</p>



<p>また、11行目でJSONファイルのデータ全てをコンソールへ出力、<br>12～14行目でJSON内の配列データを1つずつコンソールへ出力しています。</p>



<p>then()ではなく、<strong><span style="color:#b78d4a" class="has-inline-color">done()・fail()</span></strong>を使うことも可能です。<br>また、どの場合でも処理する<strong><span style="color:#b78d4a" class="has-inline-color">conplete()</span></strong>関数もあります。</p>



<h4 class="wp-block-heading"><span id="toc7">注意点</span></h4>



<p>Jquery1.8未満では、<strong><span style="color:#b78d4a" class="has-inline-color">success()、error()、conplete()</span></strong>が使用されていましたが、現在は<strong><span style="color:#b78d4a" class="has-inline-color">非推奨の関数</span></strong>となっております。<br>上記の関数が無くなることに備えて、<strong><span style="color:#b78d4a" class="has-inline-color">done()、fail()、complete()</span></strong>を使用するようにしましょう。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">done、fail、complete関数を使用</span></strong>した場合の記述です。</p>



<pre class="wp-block-code javascript"><code>$.ajax({
    // 読み込み設定
}).done(function(json){
    // 成功
}).fail(function(){
    // 失敗
}).always(function(){
    // 常に最後に処理
});</code></pre>



<h3 class="wp-block-heading"><span id="toc8">$.getJSON()</span></h3>



<p>$.getJSON()での読み込み方法です。</p>



<pre class="wp-block-code javascript"><code>$.getJSON("data.json")
    .done(function (json) {
        // 成功
    }).fail(function () {
        // 失敗
    }).always(function () {
        // 常に最後に処理
    });</code></pre>



<p>JSONファイルの読み込み -&gt; $.ajax() -&gt; 注意点で記述しているコードと似ています。<br><strong><span style="color:#b78d4a" class="has-inline-color">設定部分が$.ajax()と比べて少し簡略化</span></strong>されているところが違いですね！</p>



<p>$.ajax()でも、$.getJSON()でも使いやすいと思いますので、自分の好みで使用を決めていいと思います。</p>



<h2 class="wp-block-heading"><span id="toc9">読み込みに失敗する場合</span></h2>



<h3 class="wp-block-heading"><span id="toc10">コンソール画面でエラーを確認</span></h3>



<p>JSONファイルはちょっとしたミスで読み込めない場合が多くあります。<br>もちろん失敗した理由が分からなければ修正する方法も分かりません。</p>



<p>そこで、失敗時の関数でこのように記述し、コンソール画面を確認することである程度はエラーの内容を理解することができます。</p>



<pre class="wp-block-code javascript"><code>$.ajax({
    ・・・略
}).then(
    function (json) {
        ・・・略
    },
    function (jqXHR, textStatus, errorThrown) {
        // 読み込み失敗時の処理
        console.log("読み込みに失敗しました");
        // httpステータス
        console.log("jqXHR : " + jqXHR.status);
        // タイムアウト、パースエラー
        console.log("textStatus : " + textStatus);
        // エラーの詳細情報
        console.log("errorThrown : " + errorThrown.message);
    }
);</code></pre>



<p>大体は<strong><span style="color:#b78d4a" class="has-inline-color">「jqXHR.status」</span></strong>と<strong><span style="color:#b78d4a" class="has-inline-color">「errorThrown.message」</span></strong>の内容をネット検索等、調べたらエラーを解決することができると思います。</p>



<h3 class="wp-block-heading"><span id="toc11">JSONファイルのミスを防ぐWEBツール</span></h3>



<p><strong><a rel="noopener" class="link broken_link" href="https://lab.syncer.jp/Tool/JSON-Viewer/" target="_blank" label="undefined (opens in a new tab)">JSON Pretty Linter</a></strong></p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">JSONファイルの記述ミスを防ぐため</span></strong>のおすすめはこちらです。<br>こちらで事前にチェックすることでエラーの割合はかなり減ると思います。</p>



<h3 class="wp-block-heading"><span id="toc12">JSON変換ツール</span></h3>



<p><strong><a rel="noopener" class="link" aria-label="undefined (opens in a new tab)" href="https://csvjson.com/" target="_blank">CSV to JSON – CSVJSON</a></strong></p>



<p>CSVやSQLからJSONに変換できるツールです。<br>CSVやSQLを良く使用されるかたは一度使用してみてはいかがでしょうか。</p>



<h2 class="wp-block-heading"><span id="toc13">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回はJQueryでJSONファイルを読み込む方法をご紹介しました。</p>



<p>JSONファイルを読み込むには、こちらの2つの方法で実装できます。<br>・<strong><span style="color:#b78d4a" class="has-inline-color">$.ajax()</span></strong><br>・<strong><span style="color:#b78d4a" class="has-inline-color">$.getJSON()</span></strong></p>



<p>また、JSONファイルの読み込みには、ちょっとしたミスでエラーが発生しますので、<strong><span style="color:#b78d4a" class="has-inline-color">デバッグでステータスコードを調べること</span></strong>が解決の近道です。</p>



<p>今回は全3回のJSONの記事でしたが、新しくJSONの内容を学んだ後には新しい記事を投稿しようとおもいます。良かったら次回も見てみてくださいね！</p>



<p>↓↓↓【JSON入門シリーズ♪】</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1514/" title="【JSON入門】JSONとは？JS相互変換について(stringify/parse)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JSONの基本知識と基本的な使い方（JSONとJavaScriptオブジェクトとの相互変換）を紹介します。相互変換については、stringfy関数を使用したエンコード方法（encode）、parse関数を使用したデコード方法（decode）を分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.27</div></div></div></div></a>
</div></figure>



<p><br></p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1526/" title="【JSON入門】JSONデータの参照・追加（更新）・削除" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONデータの参照・追加（更新）・削除</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは。前回はJSONファイルとは何かというのを紹介していきました。詳しくは、こちらからご覧ください。 今回はJSONデータの扱い方の続編となります。宜しければご覧ください。 操作するデータ こちらが今回サンプルのデータです。json_...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.28</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1566/" title="【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JQueryを使用したJSONファイルの読み込み方を紹介します。「$.ajax()」や「$.getJSON()」を使った読み込み方法や、読み込みに失敗する場合の対処方法など分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.30</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1566/">【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1566/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JSON入門】JSONデータの参照・追加（更新）・削除</title>
		<link>https://nyanblog2222.com/programming/javascript/1526/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1526/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 28 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[データフォーマット]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1526</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/81.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。前回はJSONファイルとは何かというのを紹介していきました。詳しくは、こちらからご覧ください。 今回はJSONデータの扱い方の続編となります。宜しければご覧ください。 目次 操作するデータJSONデータを参照 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1526/">【JSON入門】JSONデータの参照・追加（更新）・削除</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/81.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回はJSONファイルとは何かというのを紹介していきました。<br>詳しくは、こちらからご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1514/" title="【JSON入門】JSONとは？JS相互変換について(stringify/parse)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JSONの基本知識と基本的な使い方（JSONとJavaScriptオブジェクトとの相互変換）を紹介します。相互変換については、stringfy関数を使用したエンコード方法（encode）、parse関数を使用したデコード方法（decode）を分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.27</div></div></div></div></a>
</div></figure>



<p>今回はJSONデータの扱い方の続編となります。<br>宜しければご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-44" checked><label class="toc-title" for="toc-checkbox-44">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">操作するデータ</a></li><li><a href="#toc2" tabindex="0">JSONデータを参照</a><ol><li><a href="#toc3" tabindex="0">データの参照方法</a></li><li><a href="#toc4" tabindex="0">特定のデータのみ参照する方法</a></li></ol></li><li><a href="#toc5" tabindex="0">JSONデータを追加</a><ol><li><a href="#toc6" tabindex="0">新規プロパティを指定して値を追加</a></li><li><a href="#toc7" tabindex="0">push関数でオブジェクトを追加</a></li><li><a href="#toc8" tabindex="0">値やオブジェクトを更新する場合</a></li></ol></li><li><a href="#toc9" tabindex="0">JSONデータを削除</a></li><li><a href="#toc10" tabindex="0">最後に</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">操作するデータ</span></h2>



<p>こちらが今回サンプルのデータです。<br><strong><span style="color:#b78d4a" class="has-inline-color">json_dataが配列</span></strong>、<strong><span style="color:#b78d4a" class="has-inline-color">testはオブジェクト</span></strong>になっています。<br>※違いは<strong><span style="color:#b78d4a" class="has-inline-color">” [ ] ”</span></strong>で括られているか、<strong><span style="color:#b78d4a" class="has-inline-color">” { } ”</span></strong>で括られているかです。</p>



<pre class="wp-block-code json"><code>var json_data = &#91;
    { name : "yamada", school_year : 2, test : { japanese : 65, english : 80 }, },
    { name : "hayashi", school_year : 2,  test : { japanese : 45, english : 95 }, },
    { name : "sato", school_year : 1,  test : { jananese : 75, english : 35 }, }
];</code></pre>



<h2 class="wp-block-heading"><span id="toc2">JSONデータを参照</span></h2>



<p>まずは、作成したJSONデータを参照する方法です。</p>



<h3 class="wp-block-heading"><span id="toc3">データの参照方法</span></h3>



<p>json_dataは<strong><span style="color:#b78d4a" class="has-inline-color">配列のため、添え字でデータを参照</span></strong>することができます。<br>それ以外は<strong><span style="color:#b78d4a" class="has-inline-color">オブジェクトの構造になっており、「オブジェクト.プロパティ</span>」</strong>のように、ドットで参照することができます。</p>



<pre class="wp-block-code javascript"><code>// name、school_year：プロパティ
console.log(json_data&#91;0].name); // => yamada
console.log(json_data&#91;1].school_year); // => 2

// testプロパティ（オブジェクト）にenglishプロパティを保持
console.log(json_data&#91;2].test.english); // => 35</code></pre>



<h3 class="wp-block-heading"><span id="toc4">特定のデータのみ参照する方法</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">filter関数</span></strong>を使用することで、特定のデータのみ参照することができます。</p>



<pre class="wp-block-code javascript"><code>// filter関数
var data = json_data.filter(function (item) {
    // 英語が50点以上の人のデータを取得
    return item.test.english >= 50;
});

// 条件に一致したデータの”name”を参照
data.forEach(function (value){
    console.log(value.name) // => yamada, hayashi
});</code></pre>



<h2 class="wp-block-heading"><span id="toc5">JSONデータを追加</span></h2>



<h3 class="wp-block-heading"><span id="toc6">新規プロパティを指定して値を追加</span></h3>



<p>プロパティと値をそのままデータに追加する方法です。</p>



<p>それぞれ、<br>　配列と同じ階層に<strong><span style="color:#b78d4a" class="has-inline-color">areaプロパティ「&#8221;Tokyo&#8221;」</span></strong>が追加<br>　配列添字 [1] 内のオブジェクトに<strong><span style="color:#b78d4a" class="has-inline-color">areaプロパティ「&#8221;Osaka&#8221;」</span></strong>が追加<br>になっています。</p>



<pre class="wp-block-code javascript"><code>json_data.area = "Tokyo";
json_data&#91;1].area = "Osaka";

console.log(json_data)
// { name : "yamada", school_year : 2, test : { japanese : 65, english : 80 }, },
// { name : "hayashi", school_year : 2,  test : { japanese : 45, english : 95 }, area: "Osaka" },
// { name : "sato", school_year : 1,  test : { jananese : 75, english : 35 }, },
// area: "Toyko"</code></pre>



<h3 class="wp-block-heading"><span id="toc7">push関数でオブジェクトを追加</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">オブジェクトを作成してpush関数</span></strong>を使う方法です。<br>push関数で追加したオブジェクトは末尾に追加されます。</p>



<pre class="wp-block-code javascript"><code>var new_data = { name : "tanaka", school_year : 3, test : { japanese : 85, english : 60 }, };
json_data.push(new_data);

// 末尾のデータ
console.log(json_data&#91;json_data.length - 1])
// { name : "tanaka", school_year : 3, test : { japanese : 85, english : 60 }, }</code></pre>



<h3 class="wp-block-heading"><span id="toc8">値やオブジェクトを更新する場合</span></h3>



<p>データ内の値やオブジェクトを更新する場合、<strong><span style="color:#b78d4a" class="has-inline-color">配列やオブジェクトをそのまま指定して値を設定するだけで更新が可能</span></strong>です。</p>



<pre class="wp-block-code javascript"><code>// プロパティの値を指定
json_data&#91;1].area = "Osaka";
console.log(json_data&#91;1].area) // => Osaka

json_data&#91;1].area = "Nagoya";
console.log(json_data&#91;1].area) // => Nagoya</code></pre>



<pre class="wp-block-code javascript"><code>// オブジェクトを更新
console.log(json_data&#91;2])
// { name : "hayashi", school_year : 2,  test : { japanese : 45, english : 95 }, }

var new_data = { name : "tanaka", school_year : 3, test : { japanese : 85, english : 60 }, };

// name:"hayashi"オブジェクトを"tanaka"オブジェクトに更新
json_data&#91;2] = new_data;
console.log(json_data&#91;2])
// { name : "tanaka", school_year : 3, test : { japanese : 85, english : 60 }, }</code></pre>



<h2 class="wp-block-heading"><span id="toc9">JSONデータを削除</span></h2>



<p>指定のプロパティを削除するときは、<strong><span style="color:#b78d4a" class="has-inline-color">「delete」演算子</span></strong>を使用します。</p>



<pre class="wp-block-code"><code>// 各配列の"school_year"を削除
json_data.forEach(function (value) {
    delete value.school_year;
    console.log(value)
});

// { name : "yamada", test : { japanese : 65, english : 80 }, },
// { name : "hayashi", test : { japanese : 45, english : 95 }, },
// { name : "sato", test : { jananese : 75, english : 35 }, },</code></pre>



<p>配列の要素を削除したい場合は、<strong><span style="color:#b78d4a" class="has-inline-color">削除したい要素をfalse条件</span></strong>にして<strong><span style="color:#b78d4a" class="has-inline-color">filter関数</span></strong>を使えば可能です。</p>



<h2 class="wp-block-heading"><span id="toc10">最後に</span></h2>



<p>いかがでしたでしょうか。<br>今回はJSONデータの扱い方続編ということで、<strong><span style="color:#b78d4a" class="has-inline-color">基本的な操作方法（参照・追加（更新）・削除）</span></strong>についてご紹介しました。<br>次はもう少し応用的な操作方法をご紹介できたらと思います。</p>



<p>良かったら次回も見てみてくださいね！</p>



<p>↓↓↓【JSON入門シリーズ♪】<br></p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1514/" title="【JSON入門】JSONとは？JS相互変換について(stringify/parse)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JSONの基本知識と基本的な使い方（JSONとJavaScriptオブジェクトとの相互変換）を紹介します。相互変換については、stringfy関数を使用したエンコード方法（encode）、parse関数を使用したデコード方法（decode）を分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.27</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1526/" title="【JSON入門】JSONデータの参照・追加（更新）・削除" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONデータの参照・追加（更新）・削除</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは。前回はJSONファイルとは何かというのを紹介していきました。詳しくは、こちらからご覧ください。 今回はJSONデータの扱い方の続編となります。宜しければご覧ください。 操作するデータ こちらが今回サンプルのデータです。json_...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.28</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1566/" title="【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JQueryを使用したJSONファイルの読み込み方を紹介します。「$.ajax()」や「$.getJSON()」を使った読み込み方法や、読み込みに失敗する場合の対処方法など分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.30</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1526/">【JSON入門】JSONデータの参照・追加（更新）・削除</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1526/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JSON入門】JSONとは？JS相互変換について(stringify/parse)</title>
		<link>https://nyanblog2222.com/programming/javascript/1514/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1514/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 27 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[データフォーマット]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1514</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/80.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。JSONファイルについて、ご存じでしょうか。本記事はJSONファイルについてと、基本的な扱い方についてご紹介します。 目次 JSONファイルとはどういうファイルなの？JSONの良いところオブジェクトとは似て非 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1514/">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/80.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。JSONファイルについて、ご存じでしょうか。<br>本記事は<strong><span style="color:#b78d4a" class="has-inline-color">JSONファイルについて</span></strong>と、<strong><span style="color:#b78d4a" class="has-inline-color">基本的な扱い方について</span></strong>ご紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-46" checked><label class="toc-title" for="toc-checkbox-46">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">JSONファイルとは</a><ol><li><a href="#toc2" tabindex="0">どういうファイルなの？</a></li><li><a href="#toc3" tabindex="0">JSONの良いところ</a></li><li><a href="#toc4" tabindex="0">オブジェクトとは似て非なるもの</a></li></ol></li><li><a href="#toc5" tabindex="0">JSONの基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">オブジェクトからJSONへ（エンコード encode）</a></li><li><a href="#toc7" tabindex="0">JSONからオブジェクトへ（デコード decode）</a></li></ol></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">JSONファイルとは</span></h2>



<h3 class="wp-block-heading"><span id="toc2">どういうファイルなの？</span></h3>



<p>JSONは「<strong><span style="color:#b78d4a" class="has-inline-color">JavaScript Object Notation</span></strong>」で直訳すると、「JavaScriptのオブジェクト表記法」となります。</p>



<p>つまり、<strong><span style="color:#b78d4a" class="has-inline-color">情報のやりとりができるテキストベースのデータ形式</span></strong>を表しています。<br>同じようなデータ形式で、XMLファイルが代表的な例としてよく挙げられています。</p>



<h3 class="wp-block-heading"><span id="toc3">JSONの良いところ</span></h3>



<p>JSONの特徴は主にこちらの3点を満たしており、この特徴を持つことで、<strong><span style="color:#b78d4a" class="has-inline-color">サーバ間の通信</span></strong>や<strong><span style="color:#b78d4a" class="has-inline-color">さまざまなプログラミング言語との共有</span></strong>を可能にしています。</p>



<ul class="wp-block-list"><li>テキストデータのため、<strong><span style="color:#b78d4a" class="has-inline-color">軽量</span></strong></li><li><strong><span style="color:#b78d4a" class="has-inline-color">オブジェクトのように</span></strong>扱える</li><li><strong><span style="color:#b78d4a" class="has-inline-color">単純な構造</span></strong></li></ul>



<h3 class="wp-block-heading"><span id="toc4">オブジェクトとは似て非なるもの</span></h3>



<p>先ほどのJSONの良いところでも上げましたが、相互変換が可能なため、JSONはオブジェクトのように扱うことができます。</p>



<p>しかし、JSONは<strong><span style="color:#b78d4a" class="has-inline-color">テキストデータであり、オブジェクトではありません</span></strong>。</p>



<p>こちらの例を見てください。</p>



<pre class="wp-block-code javascript"><code>// object
var obj = { name: "Taro", old: 17, tel: "000-0000-1" };

// JSON
var json = { "name": "Hanako", "old": 18, "tel": "000-0000-2" };</code></pre>



<p>テキストデータに変換する前のJSONは、連想配列に似た構造となっていますが、明確な違いがあります。<br>それはこちらです。</p>



<ul class="wp-block-list"><li>プロパティのみ含めることができ、<strong><span style="color:#b78d4a" class="has-inline-color">関数は含められない</span></strong></li><li>プロパティをダブルクォーテーション（<strong><span style="color:#b78d4a" class="has-inline-color">””</span></strong>）で括る<br>→括られた文字列のみプロパティとして使用できる</li></ul>



<p>また、注意点として、<strong><span style="color:#b78d4a" class="has-inline-color">カンマ、コロンが1つでも抜けているとJSONとして無効になる</span></strong>場合もあります。</p>



<p>この辺りを理解しておくだけでも、開発するときに違うと思います。</p>



<h2 class="wp-block-heading"><span id="toc5">JSONの基本的な使い方</span></h2>



<p>さっそく、試してみましょう。<br>今回はJSONとJavaScriptのオブジェクトとの、相互変換を行ってみます。</p>



<h3 class="wp-block-heading"><span id="toc6">オブジェクトからJSONへ（エンコード encode）</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">stringfy関数</span></strong><br>・JavaScriptのオブジェクトからJSONへの変換<br>・JSONデータとして通信する前に変換することが多い</p>



<pre class="wp-block-code javascript"><code>// object
var obj = { name: "Taro", old: 17, tel: "000-0000-1" };

var json = JSON.stringify(obj);
console.log(json)</code></pre>



<h3 class="wp-block-heading"><span id="toc7">JSONからオブジェクトへ（デコード decode）</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">parse関数</span></strong><br>・JSONからJavaScriptへの変換<br>ファイルから読み込み後、プログラムで使用しやすいように<strong><span style="color:#b78d4a" class="has-inline-color">デコードする必要がある</span></strong>。</p>



<p>注意する点として、jsonはテキストベースなので全体をシングルクォートで括っています。</p>



<pre class="wp-block-code javascript"><code>// JSON
var json = '{ "name": "Hanako", "old": 18, "tel": "000-0000-2" }';

var obj = JSON.parse(json);
console.log(obj)</code></pre>



<h2 class="wp-block-heading"><span id="toc8">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回はJSONの基本的な知識と、基本的な扱い方について、ご紹介しました。<br>次回はJSON登録や更新などについて、ご紹介していきます。</p>



<p>良かったら次回も見てみてくださいね！</p>



<p>↓↓↓【JSON入門シリーズ♪】</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1514/" title="【JSON入門】JSONとは？JS相互変換について(stringify/parse)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/80-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/80-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JSONの基本知識と基本的な使い方（JSONとJavaScriptオブジェクトとの相互変換）を紹介します。相互変換については、stringfy関数を使用したエンコード方法（encode）、parse関数を使用したデコード方法（decode）を分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.27</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1526/" title="【JSON入門】JSONデータの参照・追加（更新）・削除" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/81-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/81-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JSONデータの参照・追加（更新）・削除</div><div class="blogcard-snippet internal-blogcard-snippet">こんにちは。前回はJSONファイルとは何かというのを紹介していきました。詳しくは、こちらからご覧ください。 今回はJSONデータの扱い方の続編となります。宜しければご覧ください。 操作するデータ こちらが今回サンプルのデータです。json_...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.28</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1566/" title="【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/82-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/82-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JSON入門】JQueryでのJSON読み込み方法(ajax/getJSON)</div><div class="blogcard-snippet internal-blogcard-snippet">JSON入門として、JQueryを使用したJSONファイルの読み込み方を紹介します。「$.ajax()」や「$.getJSON()」を使った読み込み方法や、読み込みに失敗する場合の対処方法など分かりやすく解説♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.30</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1514/">【JSON入門】JSONとは？JS相互変換について(stringify/parse)</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1514/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</title>
		<link>https://nyanblog2222.com/programming/javascript/1506/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1506/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 25 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[img要素]]></category>
		<category><![CDATA[画像]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1506</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。 同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！ 目次 HTMLCSSJa [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。</p>



<p>同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-48" checked><label class="toc-title" for="toc-checkbox-48">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>今回のHTMLは至ってシンプルです。<br><strong><span style="color:#b78d4a" class="has-inline-color">img要素を作成する親div</span></strong>を記述しています。</p>



<pre class="wp-block-code html"><code>&lt;body>
    &lt;div id="result">&lt;/div>
&lt;/body></code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSS</span></h2>



<p>今回はCSSは使用していないので、不要です。<br>※ その代わりJavaScriptがしっかり目です。</p>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>JavaScriptはこちらです。<br>今回はJQueryは使っていません。</p>



<p>要所要所で、解説用にコメントを記述してみました。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {
    // 色々宣言・初期化
    var canvas = document.createElement("canvas");
    canvas.width = 0;
    canvas.height = 0;
    var images = &#91;];
    var srcs = &#91;
        'img/1.jpg',
        'img/2.jpg',
        'img/3.jpg',
        'img/4.jpg',
    ];
    var loadCount = 0;

    // Canvas上に画像を表示
    for (var i = 0; i &lt; srcs.length; i++) {
        // Imageのインスタンスを生成し、それぞれの画像を設定
        images&#91;i] = new Image();
        images&#91;i].src = srcs&#91;i];

        // 画像の読み込みが終わったら
        images&#91;i].onload = function () {
            // カウントを取る
            loadCount++;

            // 画像全てloadが終わったら
            if (loadCount === images.length) {
                // ロード後の処理
                loadProcess(images, canvas);
            }
        };
    }
};

// ロード後の処理
function loadProcess(images, canvas) {
    // 画像それぞれのサイズを計算して、canvasのサイズを設定
    setCanvasSize(images, canvas);

    // canvasをクリアにする
    let ctx = canvas.getContext('2d');
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // カンバスに画像を描画
    drowImage(images, ctx);

    // canvasを画像に変換
    canvasToImage(canvas);
}

// カンバスサイズを設定
function setCanvasSize(images, canvas) {
    for (let i = 0; i &lt; images.length; i++) {
        // 横幅は一番大きい画像に設定
        if (canvas.width &lt; images&#91;i].naturalWidth) {
            canvas.width = images&#91;i].naturalWidth;
        }
        // 高さはプラスしていく
        canvas.height += images&#91;i].naturalHeight;
    }
}

// カンバスに画像を描画
function drowImage(images, ctx) {
    var set_y = 0;
    for (let i = 0; i &lt; images.length; i++) {
        ctx.drawImage(images&#91;i], 0, set_y);
        // 前の画像分、高さをずらして表示させるため、set_yに現在の画像の高さを設定
        set_y += images&#91;i].naturalHeight;
    }
}

// canvasからImgに変換
function canvasToImage(canvas) {
    // img要素を作成
    var outputImg = document.createElement('img');
    // canvasを画像に変換
    outputImg.src = canvas.toDataURL('image/png');
    // 変換したimg要素をdiv要素の中に追加
    document.getElementById('result').appendChild(outputImg);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/canvas_img/" target="_blank">デモページはこちら</a></strong>です。<br>サイズの取得を確認できるよう、さまざまな画像を使ってみました。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>このようなcanvasの使い方もできるんですねぇ。。。<br>色んな描画の使い方ができるので、もっと！もっと！とできるようになりたいです。<br>（ちょっとしたミニゲームっぽいのもそろそろ作ってみたい。。。）</p>



<p>今回に限った話ではないですが、実務でC#をやっておきながら、JavaScriptでオブジェクト指向の書き方が全然できておらず、猛勉強中です。</p>



<p>可読性も上げたいと思っているので、近いうちに記事にできるようしっかり勉強していきます。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1506/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】アナログ時計の作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1382/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1382/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 24 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Dateオブジェクト]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1382</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。先日JavaScriptでカウントダウンタイマーを作成してみました！詳しくはこちらをご欄ください。 今回はDateオブジェクトを使用して、アナログ時計を作成してみました。良かったら試してみてください。 目次  [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1382/">【JavaScript】アナログ時計の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。先日JavaScriptでカウントダウンタイマーを作成してみました！<br>詳しくはこちらをご欄ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1200/" title="【JavaScript】カウントダウンタイマーの作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/69-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/69-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】カウントダウンタイマーの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカウントダウンタイマーを作成しました。サンプル付きでデモもあるので分かりやすくなっています。コピペでも良いのでよかったら試してみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.08.13</div></div></div></div></a>
</div></figure>



<p>今回はDateオブジェクトを使用して、アナログ時計を作成してみました。<br>良かったら試してみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-50" checked><label class="toc-title" for="toc-checkbox-50">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>まずは、HTMLからです。<br>それぞれの役割はこちらです。</p>



<p>wrapperクラス：ラッパー<br>clockクラス：時計全体<br>scaleクラス：時計のメモリの枠<br>　※ JavaScriptでそれぞれのメモリを設定します。<br>hourクラス：時針<br>minクラス：分針<br>secクラス：秒針</p>



<pre class="wp-block-code html"><code>&lt;body&gt;
    &lt;div class="wrapper"&gt;
        &lt;div class="clock"&gt;
            &lt;div class="scale"&gt;&lt;/div&gt;
            &lt;div class="hour line"&gt;&lt;/div&gt;
            &lt;div class="min line"&gt;&lt;/div&gt;
            &lt;div class="sec line"&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSS</span></h2>



<p>こちらがスタイルの設定です。</p>



<pre class="wp-block-code css"><code>@<strong>charset</strong> "utf-8";

.wrapper {
    width: 100%;
    padding: 40px;
    box-sizing: border-box;

    display: flex;
    align-items: center;
    flex-direction: column;
}

.clock {
    background-color: rgba(255, 243, 217, 0.2);
    border: 3px solid #C6A35B;
    width: 400px;
    height: 400px;
    position: relative;
    border-radius: 50%;
}

.clock::after {
    width: 16px;
    height: 16px;
    background: #C6A35B;
    content: "";

    position: absolute;
    top: calc(50% - 8px);
    left: calc(50% - 8px);
    border-radius: 50%;
}

.line {
    position: absolute;
    transform-origin: bottom;
}

.hour {
    width: 8px;
    height: 140px;
    background: #C6A35B;
    top: calc(50% - 140px);
    left: calc(50% - 4px);
}

.min {
    width: 4px;
    height: 180px;
    background: #C6A35B;
    top: calc(50% - 180px);
    left: calc(50% - 2px);
}

.sec {
    width: 1px;
    height: 180px;
    background: #D4BB92;
    top: calc(50% - 180px);
    left: calc(50% - 0.5px);
}

.scale {
    position: relative;
    width: 100%;
    height: 100%;
}

.scale &gt; <strong>div</strong> {
    position: absolute;
    top: 0;
    left: calc(50% - 2px);
    width: 4px;
    height: 50%;
    transform-origin: bottom;
}

.scale &gt; <strong>div</strong>::after {
    position: absolute;
    top: 0;
    content: "";
    width: 4px;
    height: 12px;
    background-color: #C6A35B;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>JavaScriptで針の動きと、時計のメモリを設定しています。</p>



<p>・setIntervalは1秒ごとなので1000でも良いですが、起動後に1秒待つ必要があるため、100で設定しています。<br>・針やメモリはstyle.transformでrotateを指定して角度を設定しています。<br>・window.onloadの関数内では、scaleクラスの要素の最後にdiv要素を追加しています。</p>



<pre class="wp-block-code javascript"><code>setInterval(<strong>function</strong> () {
    <em>// 時間を取得</em>
    <strong>var</strong> now = <strong>new</strong> Date();

    <em>// 針の角度</em>
    <strong>var</strong> deg_h = now.getHours() * (360 / 12) + now.getMinutes() * (360 / 12 / 60);
    <strong>var</strong> deg_m = now.getMinutes() * (360 / 60);
    <strong>var</strong> deg_s = now.getSeconds() * (360 / 60);

    <em>// それぞれの針に角度を設定</em>
    document.querySelector(".hour").style.transform = `rotate(${deg_h}deg)`;
    document.querySelector(".min").style.transform = `rotate(${deg_m}deg)`;
    document.querySelector(".sec").style.transform = `rotate(${deg_s}deg)`;
}, 100);

window.onload = <strong>function</strong> () {
    <em>// メモリを追加</em>
    <strong>for</strong> (<strong>let</strong> i = 1; i &lt;= 12; i++) {
        <em>// scaleクラスの要素の最後にdiv要素を追加</em>
        <strong>let</strong> scaleElem = document.querySelector(".scale");
        <strong>let</strong> addElem = document.createElement("div");
        scaleElem.appendChild(addElem);

        <em>// 角度をつける</em>
        document.querySelector(".scale div:nth-child(" + i + ")").style.transform = `rotate(${i * 30}deg)`;
    }
}</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/analog_clock/" target="_blank">デモページはこちら</a></strong>です。<br>実際の時刻に合わせて時計が動いているのが分かります。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回はJavaScriptでアナログ時計を作成してみました。</p>



<p>Dateオブジェクト以外にも、CSSのtransformの使い方やJavaScriptで要素内に要素を追加する方法も中で行っているので、ぜひ試してみてください。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1382/">【JavaScript】アナログ時計の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1382/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】簡単に文字をカーブ状に配置するプラグイン【Arctext.js】</title>
		<link>https://nyanblog2222.com/programming/javascript/1233/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1233/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 12 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Arctext]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[カーブ]]></category>
		<category><![CDATA[円形]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1233</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/79.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/79.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />文字をカーブさせるためには、CSSやJavaScriptで一から作成するのはかなり難しいです。今回は、JavaScriptのプラグインを使って、簡単に文字をカーブ状に配置する方法をご紹介します。 目次 プラグインの設定A [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1233/">【JavaScript】簡単に文字をカーブ状に配置するプラグイン【Arctext.js】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/79.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/79.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/79-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>文字をカーブさせるためには、CSSやJavaScriptで一から作成するのはかなり難しいです。<br>今回は、JavaScriptのプラグインを使って、簡単に文字をカーブ状に配置する方法をご紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-52" checked><label class="toc-title" for="toc-checkbox-52">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">プラグインの設定</a><ol><li><a href="#toc2" tabindex="0">Arctext.jsのファイルをダウンロード</a></li><li><a href="#toc3" tabindex="0">script参照の設定</a></li></ol></li><li><a href="#toc4" tabindex="0">HTML</a></li><li><a href="#toc5" tabindex="0">CSS</a></li><li><a href="#toc6" tabindex="0">JavaScript</a></li><li><a href="#toc7" tabindex="0">Arctext.jsのオプション</a></li><li><a href="#toc8" tabindex="0">デモ</a></li><li><a href="#toc9" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">プラグインの設定</span></h2>



<h3 class="wp-block-heading"><span id="toc2">Arctext.jsのファイルをダウンロード</span></h3>



<p>こちらのページ<strong><a rel="noopener" class="link" href="http://tympanus.net/codrops/2012/01/24/arctext-js-curving-text-with-css3-and-jquery/" target="_blank">[Arctext.js – Curving Text with CSS3 and jQuery]</a></strong>のページから<strong><span style="color:#b78d4a" class="has-inline-color">「Download Source」</span></strong>をクリックしてダウンロードすることができます。<br>このプラグインはCDNには設置されていないので、ダウンロードしてファイルを配置してください。</p>



<p>また、このプラグインはJqueryを使用していますので、CDN設置のアドレスを設定するか、事前にダウンロードして用意してください。</p>



<h3 class="wp-block-heading"><span id="toc3">script参照の設定</span></h3>



<p>先ほどダウンロードしたファイルをhtmlでscript要素で参照設定します。</p>



<pre class="wp-block-code"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js">&lt;/script>
&lt;script src="js/jquery.arctext.js">&lt;/script>
&lt;script src="js/script.js">&lt;/script></code></pre>



<h2 class="wp-block-heading"><span id="toc4">HTML</span></h2>



<p>HTMLでカーブ状にしたい要素に対してidを設定していきます。<br>具体的な設定はJavaScriptで設定します。</p>



<pre class="wp-block-code"><code>&lt;body>
    &lt;p id="sample1">nyanblog javascript&lt;/p>
    &lt;p id="sample2">簡単にカーブにできるよ&lt;/p>
    &lt;p id="sample3">よかったら試してみてね&lt;/p>
    &lt;p id="sample4">文字をまっすぐにできるよ&lt;/p>
&lt;/body></code></pre>



<h2 class="wp-block-heading"><span id="toc5">CSS</span></h2>



<p>CSSで少しスタイルも編集しています。</p>



<pre class="wp-block-code"><code>p {
    text-align: center;
    color: #D09B4A;
    margin: 5rem auto;
    font-weight: bold;
    font-size: 1.6rem;
}

#sample3 {
    margin-top: 16rem;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc6">JavaScript</span></h2>



<p>HTMLで設定したh1~h6要素やp要素に設定したidに対して、arctext関数を使って文字列をどのようにカーブ状にするか、設定します。</p>



<p>この設定は「script.js」ファイルに記述しています。</p>



<pre class="wp-block-code"><code>$(function() {
    $("#sample1").arctext({
        radius : 200,
    });
    
    $("#sample2").arctext({
        radius : 150,
    });
    
    $("#sample3").arctext({
        radius : 150,
        dir: -1,
    });
    
    $("#sample4").arctext({
        radius : 200,
        rotate: false,
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc7">Arctext.jsのオプション</span></h2>



<p>オプションを設定について、こちらの表を参考に設定してみてください。</p>



<figure class="wp-block-table">
    <table>
        <tbody>
            <tr>
                <th class="text-aline-center">オプション</th>
                <th class="text-aline-center">説明</th>
            </tr>
            <tr>
                <th>radius</th>
                <td>サークルの半径（デフォルト：0）</td>
            </tr>
            <tr>
                <th>dir</th>
                <td>方向：1:下にカーブ、-1:上にカーブ（デフォルト：1）</td>
            </tr>
            <tr>
                <th>rotate</th>
                <td>true：文字が中央を向く、false：文字がまっすぐのまま。（デフォルト：true）</td>
            </tr>
            <tr>
                <th>fitText</th>
                <td>[fitText]プラグインを使用する場合、true（デフォルト：false）</td>
            </tr>
        </tbody>
    </table>
</figure>



<h2 class="wp-block-heading"><span id="toc8">デモ</span></h2>



<p>ソースコードに記述している<strong><a class="link" href="https://nyanblog2222.com/demo/arctext/" target="_blank">「デモページはこちら」</a></strong>です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="325" height="502" src="https://nyanblog2222.com/wp-content/uploads/2020/06/c593493fb54c5efe411e6adc3316c991.png" alt="デモページのイメージ" class="wp-image-1262" srcset="https://nyanblog2222.com/wp-content/uploads/2020/06/c593493fb54c5efe411e6adc3316c991.png 325w, https://nyanblog2222.com/wp-content/uploads/2020/06/c593493fb54c5efe411e6adc3316c991-194x300.png 194w" sizes="auto, (max-width: 325px) 100vw, 325px" /></figure>



<h2 class="wp-block-heading"><span id="toc9">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回はJavaScriptのプラグインで簡単に文字をカーブ状に表現することができました。<br>これを使うとロゴも簡単にできちゃいそうですね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1233/">【JavaScript】簡単に文字をカーブ状に配置するプラグイン【Arctext.js】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1233/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1194/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1194/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 09 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[ビンゴ]]></category>
		<category><![CDATA[ランダム]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1194</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/63.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/63.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。前回はJavaScriptを使って、ビンゴカードを作成してみました。 今回はビンゴマシンを作成してみましょう！ 目次 HTMLCSSJavaScriptデモまとめ HTML まずはHTMLを作成しています。d [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1194/">【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/63.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/63.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回はJavaScriptを使って、ビンゴカードを作成してみました。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1016/" title="【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/62-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）を使ってビンゴカードを作ってみました。作成にはJqueryを使用しています。コピペで使えるソースコードや、実際のビンゴカードのサンプル付きなので、是非動かして試してみてくださいね♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.31</div></div></div></div></a>
</div></figure>



<p>今回はビンゴマシンを作成してみましょう！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-54" checked><label class="toc-title" for="toc-checkbox-54">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML</span></h2>



<p>まずはHTMLを作成しています。<br>divのwrapperで全体的に囲み、<br>・ルーレット div要素<br>・ルーレットの開始・停止ボタン div要素<br>・ルーレット停止後、出た数字を一覧で追加する枠 ul要素<br>で作成しています。</p>



<pre class="wp-block-code html"><code>// 全体的な枠
&lt;div class="wrapper"&gt;
    // ルーレット
    &lt;div id="result" class="result centering"&gt;&lt;/div&gt;
    // ルーレット開始、停止のボタン
    &lt;div class="wrapper-button"&gt;
        &lt;button id="button" class="button"&gt;START&lt;/button&gt;
    &lt;/div&gt;
    // ルーレットを停止後、出た数字を一覧で表示
    &lt;ul id="number" class="number"&gt;&lt;/ul&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSS</span></h2>



<p>こちらがCSSです。<br>HTMLで設定した要素に対して、スタイルを設定していきます。<br>この辺りはコピペで好きなところを調整してもいいと思います！</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

body {
    font-family: arial, sans-serif;
}

.wrapper {
    margin: 0 auto;
    text-align: center;
}

.centering {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto;
}

/* ルーレット */
.result {
    border: solid 1px #B78D4A;
    border-radius: 50%;
    font-size: 70px;
    
    margin-bottom: 20px;
    width: 130px;
    height: 130px;
}

/* 出た数字の一覧 */
.number {
    color: #B78D4A;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    margin: 0 auto;
    list-style: none;
    width: 80%;
    padding: 0;
}

.number li {
    background-color: #B78D4A;
    color: #fff;
    border-radius: 10px;
    height: 40px;
    margin: 4px;
    width: 40px;
}

/* ボタン */
.wrapper-button {
    padding: 20px 0;
}

.button {
    font-size: 30px;
    display: inline-block;
    padding: .8rem 1.6rem;
    border: none;
    border-radius: 25px;
    color: #FFF;
    background-image: linear-gradient(45deg, #B78D4A 0%, #D4BB92 100%);
}

.button:hover {
    background-image: linear-gradient(45deg, #D4BB92 0%, #FDE0A5 100%);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>Jqueryを使っています。</p>



<p>まずは、ビンゴの数字一覧を作成します。この一覧を使ってルーレットを回します。</p>



<p>次にSTARTとSTOPのクリックイベントでルーレットを回したり、結果を表示させたりします。<br>詳しくはコメントを記載していますので、確認してください。</p>



<pre class="wp-block-code javascript"><code>$(function () {

    // 1~75まで、bingoの数字一覧を作成
    var max = 75;
    var bingo = &#91;];
    for (var i = 1; i &lt;= max; i++) {
        bingo.push(i);
    }

    var timer;
    var random;
    // START・STOPボタンクリックのイベント
    $("#button").on("click", function () {
        // START
        if ($(this).text() == "START") {
            // ボタンのテキストを"STOP"に変更
            $(this).text("STOP");

            // ルーレットタイマーを設定
            timer = setInterval(function () {
                random = Math.floor(Math.random() * bingo.length);
                $("#result").text(bingo&#91;random]);
            }, 10);
        // STOP
        } else {
            // ボタンのテキストを"START"に変更
            $(this).text("START");

            // ルーレットタイマーを停止
            clearInterval(timer);

            // 停止時の数字を結果に反映
            var result = bingo&#91;random];
            // 一覧から削除（次のルーレットに表示させないため）
            bingo.splice(random, 1);

            // 数字一覧に追加
            $("#number").append($("&lt;li&gt;").text(result));
            $("#number li").addClass("centering");
        }
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/bingo2/" target="_blank">こちらがデモページ</a></strong>です。<br>STARTボタンをクリックしてルーレットが開始、一定時間後にSTOPボタンをクリックすることで、数字を止めることができます。</p>



<p>ボタンの下に今まで出た数字が一覧で表示されるので、カードを再チェックするときに活用することができます。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>前回のビンゴカードと合わせることで、<br>ビンゴゲームをすることができます。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/1016/" title="【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/62-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）を使ってビンゴカードを作ってみました。作成にはJqueryを使用しています。コピペで使えるソースコードや、実際のビンゴカードのサンプル付きなので、是非動かして試してみてくださいね♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.31</div></div></div></div></a>
</div></figure>



<p>これならカードをビンゴゲーム一式を購入する必要もないので、簡単に遊ぶことができます。<br>良かったら遊んでみてくださいね！</p>



<p>良かったら他の記事も見てみてくださいね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1194/">【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1194/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</title>
		<link>https://nyanblog2222.com/programming/javascript/1132/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1132/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 05 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[input要素]]></category>
		<category><![CDATA[画像表示]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1132</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回は、＜input type = &#8220;file&#8221;＞で選択するボタンの装飾について説明しました。詳しくは、こちらをご覧ください。 今回はinput要素で読み込んだ画像を表示させてみようと思います。そ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1132/">＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回は、＜input type = &#8220;file&#8221;＞で選択するボタンの装飾について説明しました。<br>詳しくは、こちらをご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/html-css/1102/" title="ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&quot;file&quot;＞" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/90-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type="file"＞</div><div class="blogcard-snippet internal-blogcard-snippet">input要素において、「確認する」ボタンを でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。しかし、ファイルを選択するinput要素では、既にtype = &quot;file&quot;が設定されているため、少し工夫が必要になります！今回は選択ボタンの画像やスタイルの変更をいく...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.03</div></div></div></div></a>
</div></figure>



<p><br>今回はinput要素で読み込んだ画像を表示させてみようと思います。<br>それでは、img要素とdiv要素それぞれのパターンでみていきましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-56" checked><label class="toc-title" for="toc-checkbox-56">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【サンプル1】img要素に出力</a></li><li><a href="#toc2" tabindex="0">【サンプル2】div要素に出力</a></li><li><a href="#toc3" tabindex="0">デモ</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【サンプル1】img要素に出力</span></h2>



<p>まずは、img要素に出力してみます。<br>input要素、type=&#8221;file&#8221;では、<strong><span style="color:#b78d4a" class="has-inline-color">ファイルを選択後、onchangeのイベントが呼ばれます</span></strong>。<br>JavaScriptでは、<strong><span style="color:#b78d4a" class="has-inline-color">on(&#8220;change&#8221;, function())関数</span></strong>です。</p>



<p>HTMLではinput要素とimg要素を宣言します。</p>



<pre class="wp-block-code html"><code>&lt;input type="file" id="input1"/&gt;
&lt;img id="sample1"&gt;</code></pre>



<p>JavaScriptに1～4の内容を記述します。</p>



<p>1. ファイル選択後に呼ばれるイベントを記述<br>2. イベント内で画像ファイルの読み込みクラスを設定<br>3. 読み込みクラスの準備が終わったらimg要素のsrc属性に画像ファイルの情報を設定<br>4. 読み込んだ画像ファイルをURLに変換</p>



<pre class="wp-block-code javascript"><code>// 1. ファイル選択後に呼ばれるイベント
$("#input1").on("change", function (e) {

    // 2. 画像ファイルの読み込みクラス
    var reader = new FileReader();

    // 3. 準備が終わったら、id=sample1のsrc属性に選択した画像ファイルの情報を設定
    reader.onload = function (e) {
        $("#sample1").attr("src", e.target.result);
    }

    // 4. 読み込んだ画像ファイルをURLに変換
    reader.readAsDataURL(e.target.files&#91;0]);
});</code></pre>



<h2 class="wp-block-heading"><span id="toc2">【サンプル2】div要素に出力</span></h2>



<p>次はdiv要素に画像ファイルを出力してみます。<br>JavaScriptの記述方法も変えてみました。</p>



<p>先ほどと異なり、input要素の<strong><span style="color:#b78d4a" class="has-inline-color">onchange属性にOutputImage関数を設定</span></strong>しています。</p>



<pre class="wp-block-code html"><code>&lt;input type="file" id="input2" onchange="OutputImage(this);"/>
&lt;div id="sample2">&lt;/div></code></pre>



<p>JavaScriptではサンプル1と同様、ファイル読み込みクラスを使用して、画像を表示させます。<br>サンプル1と異なるのはImageクラスを使って、<strong><span style="color:#b78d4a" class="has-inline-color">heightとwidthの設定を追加</span></strong>しています。</p>



<p>1. input要素のonchange属性に関数を設定<br>2. イベント内で画像ファイルの読み込みクラスを設定<br>3. 読み込みクラスの準備が終わったら画像の情報を設定<br>4. Imageクラスに読み込んだ画像の情報を設定し、div要素に読み込んだ画像の縦・横のサイズを設定<br>5. backgroundスタイルを設定<br>6. 読み込んだ画像ファイルをURLに変換</p>



<pre class="wp-block-code javascript"><code>// 1. onchange属性に設定した関数
function OutputImage(target)
{
    // 2. ファイル読み込みクラス
    var reader = new FileReader();

    // 3. 読み込みクラスの準備が終わった後、画像の情報を設定
    reader.onload = function () {
        $sample2 = $("#sample2");

        // 4. Imageクラスを使ってdiv要素に画像のheightとwidthのサイズを設定
        img = new Image();
        img.src = this.result;
        img.onload = function() {
            $sample2.css("width", img.naturalWidth);
            $sample2.css("height", img.naturalHeight);
        }
        // 5. backgroundスタイルを設定
        $sample2.css("background", "url(" + this.result + ") center center / contain no-repeat");
    }
    // 6. 読み込んだ画像ファイルをURLに変換
    reader.readAsDataURL(target.files&#91;0]);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">デモ</span></h2>



<p>こちらがサンプル1とサンプル2のデモです。<br>内容は一緒ですが、出力方法や要素がimgかdivであることが異なります。</p>



<style type="text/css">
        #demo > div {
margin: 1rem;
}

        #demo p {
margin: 0;
}

#demo input {
height: auto;
    padding: 0;
border: none;
}
    </style>

<div id="demo">
           
        <div>
            <p>サンプル1</p>
            <input type="file" id="input1">
            <img id="sample1">
        </div>
        
        <div>
            <p>サンプル2</p>
            <input type="file" id="input2" onchange="OutputImage(this);">
            <div id="sample2"></div>
        </div>
        
        </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">
        $("#input1").on("change", function (e) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $("#sample1").attr("src", e.target.result);
            }
            reader.readAsDataURL(e.target.files[0]);
        });
        
        function OutputImage(target)
        {
            var reader = new FileReader();
            reader.onload = function () {
                $sample2 = $("#sample2");
                img = new Image();
                img.src = this.result;
                img.onload = function() {
                    $sample2.css("width", img.naturalWidth);
                    $sample2.css("height", img.naturalHeight);
                }
                $sample2.css("background", "url(" + this.result + ") center center / contain no-repeat");
            }
            reader.readAsDataURL(target.files[0]);
        }
    </script>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p>今回はinput type=file要素で取得した画像ファイルを出力する方法を説明していきました。<br>divに関して、今回例で試してみただけなので、別の要素でも試してみてください。<br>次回は複数ファイルを読み込んで出力してみましょう。</p>



<p>本記事をご覧いただきありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1132/">＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1132/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</title>
		<link>https://nyanblog2222.com/programming/html-css/1102/</link>
					<comments>https://nyanblog2222.com/programming/html-css/1102/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 03 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[input要素]]></category>
		<category><![CDATA[ファイルを選択]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1102</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />input要素において、「確認する」ボタンを ＜input type = &#8220;image&#8221;＞ でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。 しかし、ファイ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/1102/">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>input要素において、「確認する」ボタンを ＜input type = &#8220;image&#8221;＞ でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。</p>



<p>しかし、ファイルを選択するinput要素では、既にtype = &#8220;file&#8221;が設定されているため、少し工夫が必要になります！<br>今回は選択ボタンの画像やスタイルの変更をいくつかの方法でご紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-58" checked><label class="toc-title" for="toc-checkbox-58">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【サンプル1】ボタンを画像に設定する</a></li><li><a href="#toc2" tabindex="0">ボタンのスタイルを変更</a><ol><li><a href="#toc3" tabindex="0">【サンプル2】&lt;label&gt;で囲んでスタイルを設定</a></li><li><a href="#toc4" tabindex="0">【サンプル3】CSSとJavaScriptを使ってスタイルを変更</a></li></ol></li><li><a href="#toc5" tabindex="0">デモ</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【サンプル1】ボタンを画像に設定する</span></h2>



<p>ボタンを画像にする方法について、<br>HTMLでは、<strong><span style="color:#b78d4a" class="has-inline-color">input要素をlabel要素</span></strong>で囲みます。</p>



<pre class="wp-block-code html"><code>&lt;label id="sample1"&gt;
   &lt;input type="file"/&gt;
&lt;/label&gt;</code></pre>



<p>CSSでlabel要素に画像を設定します。<br>他にもサイズやポインタなど、スタイルを変更しておきましょう。</p>



<p>デフォルトでinput要素はボタンが出力されるので、display: none; で表示を消しておきます。</p>



<p>また、hoverの疑似クラスで別の画像を設定しておくと、少し動きが出ますね。</p>



<pre class="wp-block-code css"><code><strong>#sample1</strong> {
    // サイズを設定
    height: 54px;
    width: 150px;

    // ボタンにする画像を設定
    background: url(../img/sample1.png) center center / contain no-repeat;

    // インラインボックスに設定
    display: inline-block;
    // マウスカーソルを当てた時、ポインタに設定
    cursor: pointer;
}

<strong>#sample1</strong>:hover {
    background: url(../img/sample1_hover.png) center center / contain no-repeat;
}

<strong>#sample1</strong> <strong>input</strong>{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<p>また、今回はサンプルなので簡単な画像なのですが、<br>この程度の画像の動きであればスタイルでも実現可能です。</p>



<h2 class="wp-block-heading"><span id="toc2">ボタンのスタイルを変更</span></h2>



<h3 class="wp-block-heading"><span id="toc3">【サンプル2】&lt;label&gt;で囲んでスタイルを設定</span></h3>



<p>先ほどの画像の設定と同様にinput要素をlabel要素で囲みます。</p>



<pre class="wp-block-code html"><code>&lt;label id="sample2">
   &lt;input type="file"/>
&lt;/label></code></pre>



<p>続いて、今度はlabel要素をCSSで設定していきます。</p>



<pre class="wp-block-code css"><code>#sample2 {
  position: relative;
  display: inline-block;
  padding: 0.25em 0.5em;
  text-decoration: none;
  background: #00BCD4;/*背景色*/
  color: #00BCD4;/*=背景色*/
  box-shadow: inset 0 2px 0 rgba(255,255,255,0.2);
  border-bottom: solid 2px #118e9e;
  border-radius: 4px;
  font-weight: bold;
  text-shadow: -1px -1px rgba(255, 255, 255, 0.44), 1px 1px rgba(0, 0, 0, 0.38);
  cursor: pointer;
}

#sample2:active {
  /*押したとき*/
  border-bottom: solid 2px #00BCD4;
  box-shadow: none;
  text-shadow: -1px -1px rgba(255, 255, 255, 0.3), 1px 1px rgba(0, 0, 0, 0.3);
}

#sample2 input{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<h3 class="wp-block-heading"><span id="toc4">【サンプル3】CSSとJavaScriptを使ってスタイルを変更</span></h3>



<p>次はdiv要素でボタンを作成し、CSSで装飾を付けます。<br>input要素はサンプル2と同様、出力しないようにします。</p>



<pre class="wp-block-code html"><code>&lt;div id="sample3">ファイルを選択&lt;/div>
&lt;input type="file" id="sample3_input"/></code></pre>



<pre class="wp-block-code css"><code>#sample3 {
    position: relative;
    display: inline-block;
    padding: 0.75em 1.25em;
    text-decoration: none;
    color: #FFF;
    background: #03A9F4;/*色*/
    border: solid 1px #0f9ada;/*線色*/
    border-radius: 4px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
    text-shadow: 0 1px 0 rgba(0,0,0,0.2);
    cursor: pointer;
}

#sample3:active {
    border: solid 1px #03A9F4;
    box-shadow: none;
    text-shadow: none;
}

#sample3 input{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<p>JavaScriptでdiv要素をクリックしたときに、input要素をクリックしたイベントを呼び出します。<br>今回はJQueryで記述しています。</p>



<pre class="wp-block-code javascript"><code>$(function () {
    $('#sample3').click(function() {
        $('#sample3_input').trigger('click');
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc5">デモ</span></h2>



<p>今までのサンプルそれぞれのデモです。<br>ボタンをクリックするとダイアログが表示されますが、ファイルを選択しても何も起こりません。</p>



<style type="text/css">
#demo > div {
margin: 1rem;
}

        #demo p {
margin: 0;
}

#demo input {
height: auto;
    padding: 0;
border: none;
}

#sample1 {
height: 54px;
width: 150px;
background: url(https://nyanblog2222.com/wp-content/uploads/2020/06/sample1.png) center center / contain no-repeat;
display: inline-block;
cursor: pointer;
}

#sample1:hover {
background: url(https://nyanblog2222.com/wp-content/uploads/2020/06/sample1_hover.png) center center / contain no-repeat;
}

#sample1 input,
#sample2 input,
#sample3_input {
display: none;
}

#sample2 {
position: relative;
display: inline-block;
padding: 0.75em 1.25em;
text-decoration: none;
background: #fd9535;/*背景色*/
color: #d27d00;/*=背景色*/
box-shadow: inset 0 2px 0 rgba(255,255,255,0.2);
border-bottom: solid 2px #d27d00;
border-radius: 4px;
font-weight: bold;
text-shadow: -1px -1px rgba(255, 255, 255, 0.44), 1px 1px rgba(0, 0, 0, 0.38);
cursor: pointer;
}

#sample2:active {
border-bottom: solid 2px #fd9535;
box-shadow: none;
text-shadow: -1px -1px rgba(255, 255, 255, 0.3), 1px 1px rgba(0, 0, 0, 0.3);
}

#sample3 {
position: relative;
display: inline-block;
padding: 0.75em 1.25em;
text-decoration: none;
color: #FFF;
background: #03A9F4;/*色*/
border: solid 1px #0f9ada;/*線色*/
border-radius: 4px;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
text-shadow: 0 1px 0 rgba(0,0,0,0.2);
margin: 0;
cursor: pointer;
}

#sample3:active {
/*押したとき*/
border: solid 1px #03A9F4;
box-shadow: none;
text-shadow: none;
}

    </style>
   
    <div id="demo">
        <div>
            <p>デフォルト</p>
            <input type="file">
        </div>
           
        <div>
            <p>サンプル1</p>
            <label id="sample1">
                <input type="file">
            </label>
        </div>
        
        <div>
            <p>サンプル2</p>
            <label id="sample2">ファイルを選択
                <input type="file">
            </label>
        </div>
        
        <div>
            <p>サンプル3</p>
            <div id="sample3">ファイルを選択</div>
            <input type="file" id="sample3_input">
        </div>
        </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#sample3').click(function() {
                $('#sample3_input').trigger('click');
            });
        });
    </script>



<h2 class="wp-block-heading"><span id="toc6">まとめ</span></h2>



<p>今回はinput要素でファイル選択ボタンのスタイルを変更や、画像の設定を行いました。</p>



<p>ぜひ色々試してみてくださいね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/1102/">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/1102/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】非同期処理と処理の順番について【初心者・入門】</title>
		<link>https://nyanblog2222.com/programming/javascript/984/</link>
					<comments>https://nyanblog2222.com/programming/javascript/984/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 02 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[同期処理]]></category>
		<category><![CDATA[非同期処理]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=984</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />JavaScriptは同期的でシングルスレッドの処理で実行されていますが、非同期処理が可能な言語です。ここでは、非同期処理と同期処理・スレッドについてまず説明し、その後処理の順番について説明していきます。 目次 同期処理 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/984/">【JavaScript】非同期処理と処理の順番について【初心者・入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>JavaScriptは同期的でシングルスレッドの処理で実行されていますが、非同期処理が可能な言語です。<br>ここでは、<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理と同期処理・スレッド</span></strong>についてまず説明し、その後<strong><span style="color:#b78d4a" class="has-inline-color">処理の順番</span></strong>について説明していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-60" checked><label class="toc-title" for="toc-checkbox-60">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">同期処理と非同期処理</a><ol><li><a href="#toc2" tabindex="0">同期処理</a></li><li><a href="#toc3" tabindex="0">非同期処理</a></li></ol></li><li><a href="#toc4" tabindex="0">スレッドについて</a></li><li><a href="#toc5" tabindex="0">処理の順番</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">同期処理と非同期処理</span></h2>



<h3 class="wp-block-heading"><span id="toc2">同期処理</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">同期処理はプログラムの記述順に1つずつ実行</span></strong>されます。<br>そのため、次の処理は前の処理が終わらないと実行することができません。</p>



<h3 class="wp-block-heading"><span id="toc3">非同期処理</span></h3>



<p>非同期処理は同期処理と異なり<strong><span style="color:#b78d4a" class="has-inline-color">処理が実行する準備をしている空き時間の間に、別の処理を実行</span></strong>することができます。</p>



<p>この説明だけだと、<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理は並列で色んな処理ができるってこと？</span></strong>と思うかもしれません。</p>



<p>答えは　<strong><span style="color:#b78d4a" class="has-inline-color">「No」</span></strong>　です。</p>



<p>あくまで、準備している空き時間を活用しているだけなので、並列で複数の処理ができるわけではありません。<br><strong><span style="color:#b78d4a" class="has-inline-color">並列処理を行うためにはマルチスレッドで処理を実行</span></strong>する必要がありますが、<strong><span style="color:#b78d4a" class="has-inline-color">JavaScriptはシングルスレッド</span></strong>で動きますので、<strong><span style="color:#b78d4a" class="has-inline-color">並列処理ではなく、並行処理</span></strong>と言えます。</p>



<p>並列処理と並行処理の違いはこちらです。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">並列処理</span></strong><br>物理的に<strong><span style="color:#b78d4a" class="has-inline-color">複数の処理を同時に実行</span></strong>することができる</li><li><strong><span style="color:#b78d4a" class="has-inline-color">並行処理</span></strong><br>常に<strong><span style="color:#b78d4a" class="has-inline-color">1つの処理のみ実行</span></strong>しているが、タイミングを見計らって<strong><span style="color:#b78d4a" class="has-inline-color">処理を切り替えて処理を効率よく実行</span></strong>する<br><strong><span style="color:#b78d4a" class="has-inline-color">同時に実行しているように見せかけている</span></strong></li></ul>



<h2 class="wp-block-heading"><span id="toc4">スレッドについて</span></h2>



<p>先ほど<strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>と<strong><span style="color:#b78d4a" class="has-inline-color">マルチスレッド</span></strong>について話が出てきましたが、<strong><span style="color:#b78d4a" class="has-inline-color">スレッド</span></strong>とは何でしょうか。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">スレッド</span></strong>とは、1つ1つ実行する処理を表します。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>はその名の通り1つの処理を実行することができます。</p>



<p>対し、<strong><span style="color:#b78d4a" class="has-inline-color">マルチスレッド</span></strong>は複数の処理を実行することができます。</p>



<p>これを先ほどの並列処理と並行処理に当てはめると、このようになります。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">並列処理</span></strong>・・・マルチスレッドで実行</li><li><strong><span style="color:#b78d4a" class="has-inline-color">並行処理</span></strong>・・・シングルスレッドで実行</li></ul>



<p>JavaScriptは<strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>のため、<strong><span style="color:#b78d4a" class="has-inline-color">並行処理をしている</span></strong>ことになりますね。</p>



<h2 class="wp-block-heading"><span id="toc5">処理の順番</span></h2>



<p>さて先述のようにJavaScriptはシングルスレッドであることが理解できましたが、並行処理をしているということは、<strong><span style="color:#b78d4a" class="has-inline-color">処理の順番が入れ替わってしまうこと</span></strong>があります。</p>



<p>JavaScriptは<strong><span style="color:#b78d4a" class="has-inline-color">上から順番でキューに関数を登録し、処理</span></strong>しています。<br>しかし、処理が同期的なものと非同期的なものによって、順番が入れ替わることがあります。</p>



<p>＜上から順番に処理する＞</p>



<pre class="wp-block-code javascript"><code>console.log("one");
console.log("two");
console.log("three");</code></pre>



<p>実行結果</p>



<pre class="wp-block-code plaintext"><code>one
two
three</code></pre>



<p>＜順番が入れ替わっている＞</p>



<pre class="wp-block-code javascript"><code>console.log("one");
setTimeout(function(){console.log("two")}, 0);
console.log("three");</code></pre>



<p>実行結果</p>



<pre class="wp-block-code plaintext"><code>one
three
two</code></pre>



<p>順番が入れ替わっているパターンでは<strong><span style="color:#b78d4a" class="has-inline-color">「setTimeout」関数のタイマーを0ミリ秒で設定</span></strong>しています。<br>ここで不思議なのは、タイマーは0ミリ秒…つまり待ち時間なしで実行するように記述されていますが、実際の実行結果はone→<strong><span style="color:#b78d4a" class="has-inline-color">three→two</span></strong>と<strong><span style="color:#b78d4a" class="has-inline-color">2行目と3行目の順番が入れ替わって</span></strong>います。</p>



<p>キューに登録されているのは、<br>　1. ログ表示　&#8221;one&#8221;<br>　2. タイマー登録　0ミリ秒<br>　3. ログ表示　&#8221;three&#8221;<br>この3つの処理になります。<br>つまり、この時点では、<strong><span style="color:#b78d4a" class="has-inline-color">「ログ表示　&#8221;two&#8221;」はキューにまだ登録されていない</span></strong>のです。</p>



<p>では、いつ「ログ表示　&#8221;two&#8221;」はキューに登録されるのか？</p>



<p>それは、<strong><span style="color:#b78d4a" class="has-inline-color">同期処理が全て終わってから</span></strong>です。</p>



<p>なので、キューの登録の順番は、<br>同期処理<br>　1. ログ表示　&#8221;one&#8221;<br>　2. タイマー登録　0ミリ秒<br>　3. ログ表示　&#8221;three&#8221;<br>同期処理の登録完了後、非同期処理<br>　<strong><span style="color:#b78d4a" class="has-inline-color">4.ログ表示　&#8221;two&#8221;</span></strong><br>となります。</p>



<p>だから先ほどの実行結果のように、順番が入れ替わります。</p>



<h2 class="wp-block-heading"><span id="toc6">まとめ</span></h2>



<p>今回はJavaScriptの<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理と同期処理、処理の順番</span></strong>について、説明していきました。<br>JavaScriptで開発するためには、このあたりをまず始めに理解しておきたいところですね！</p>



<p>非同期処理を同期的に処理する方法については、<br>別の記事にしたいと思います。<br>ご覧いただき、ありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/984/">【JavaScript】非同期処理と処理の順番について【初心者・入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/984/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1016/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1016/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 31 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[ビンゴカード]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1016</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptを使ってビンゴカードを作成してみました。Jqueryも使用していますので、ご注意ください。 目次 HTMLの設定CSSの設定JavaScriptデモまとめ HTMLの設定 まずは、枠 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1016/">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はJavaScriptを使ってビンゴカードを作成してみました。Jqueryも使用していますので、ご注意ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-62" checked><label class="toc-title" for="toc-checkbox-62">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTMLの設定</a></li><li><a href="#toc2" tabindex="0">CSSの設定</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTMLの設定</span></h2>



<p>まずは、枠作りのHTMLからです。</p>



<p>ビンゴカードの枠と作成用のボタンを設定しています。</p>



<pre class="wp-block-code html"><code>&lt;div&gt;
    &lt;table id="bingo" cellspacing="10"&gt;
        &lt;tbody&gt;
            &lt;tr&gt;
                &lt;th&gt;B&lt;/th&gt;
                &lt;th&gt;I&lt;/th&gt;
                &lt;th&gt;N&lt;/th&gt;
                &lt;th&gt;G&lt;/th&gt;
                &lt;th&gt;O&lt;/th&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi0"&gt;&lt;/td&gt;
                &lt;td id="bi1"&gt;&lt;/td&gt;
                &lt;td id="bi2"&gt;&lt;/td&gt;
                &lt;td id="bi3"&gt;&lt;/td&gt;
                &lt;td id="bi4"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi5"&gt;&lt;/td&gt;
                &lt;td id="bi6"&gt;&lt;/td&gt;
                &lt;td id="bi7"&gt;&lt;/td&gt;
                &lt;td id="bi8"&gt;&lt;/td&gt;
                &lt;td id="bi9"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi10"&gt;&lt;/td&gt;
                &lt;td id="bi11"&gt;&lt;/td&gt;
                &lt;td id="bi12"&gt;&lt;/td&gt;
                &lt;td id="bi13"&gt;&lt;/td&gt;
                &lt;td id="bi14"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi15"&gt;&lt;/td&gt;
                &lt;td id="bi16"&gt;&lt;/td&gt;
                &lt;td id="bi17"&gt;&lt;/td&gt;
                &lt;td id="bi18"&gt;&lt;/td&gt;
                &lt;td id="bi19"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi20"&gt;&lt;/td&gt;
                &lt;td id="bi21"&gt;&lt;/td&gt;
                &lt;td id="bi22"&gt;&lt;/td&gt;
                &lt;td id="bi23"&gt;&lt;/td&gt;
                &lt;td id="bi24"&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
    &lt;p id="button"&gt;&lt;input type="button" value="カード作成" id="bingo-create"&gt;&lt;/p&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSSの設定</span></h2>



<p>ビンゴカードと作成ボタンのスタイルを設定しています。</p>



<pre class="wp-block-code css"><code><em>/* カード全体のスタイル */</em>
<strong>#bingo</strong>{
    width: 340px;
    margin: 0 auto;
}

<em>/* B I N G Oと番号のスタイル */</em>
<strong>#bingo</strong> <strong>th</strong>,
<strong>#bingo</strong> <strong>td</strong> {
    text-align: center;
    font-weight: normal;
}

<em>/* B I N G O の文字のスタイル */</em>
<strong>#bingo</strong> <strong>th</strong>{
    color: #B78D4A;
}

<em>/* 番号のスタイルを設定 */</em>
<strong>#bingo</strong> <strong>td</strong> {
    width: 60px;
    height: 55px;
    text-align: center;
    vertical-align: middle;
    
    border-radius: 1.5rem 1.5rem 0 0;
    color: #fff;
    background-color: #B78D4A;
    border: 2px solid #B78D4A;
}

<em>/* 番号をチェックした時に変更するクラス、スタイルを設定 */</em>
<strong>#bingo</strong> <strong>td</strong>.check {
    color: #B78D4A;
    background-color: #F0F0F0;
}

<em>/* 番号をマウスオーバーした時にポインタを指矢印に変更 */</em>
<strong>#bingo</strong> <strong>td</strong>:hover {
    cursor: pointer;
    cursor: hand;
}

<em>/* 作成ボタンのスタイル */</em>
<strong>p</strong><strong>#button</strong>{
    text-align: center;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JavaScript</span></h2>



<p>JavaScriptでカードの番号をランダムに設定する動きと、<br>番号をクリックした際にスタイルを変更するクラスをつけ外ししています。</p>



<pre class="wp-block-code"><code>$(<strong>function</strong> () {
    <strong>var</strong> make_col = <strong>function</strong> (base) {
        <strong>var</strong> arr = &#91;];
        <strong>for</strong>(<strong>var</strong> i=0; i&lt;15; i++) {
            arr.add(i);
        }
        <strong>var</strong> list = &#91;];
        <strong>for</strong> (<strong>var</strong> i = 1; i &lt;= 5; i++) {
            <em>// ランダムで値を取得</em>
            <strong>var</strong> a = parseInt(Math.random() * arr.length);
            list.push(arr&#91;a] + base);
            <em>// 数字を重複させないため、元々のリストから値を削除する</em>
            arr.splice(a, 1);
        }
        <strong>return</strong> list;
    };

    <strong>var</strong> make_table = <strong>function</strong> () {
        <em>// B列、I列...とそれぞれで5つの数字をランダムで取得</em>
        <strong>var</strong> col_b = make_col(1);
        <strong>var</strong> col_i = make_col(16);
        <strong>var</strong> col_n = make_col(31);
        <strong>var</strong> col_g = make_col(46);
        <strong>var</strong> col_o = make_col(61);
        
        <em>// 25個分の数字を格納できるtableに取ってきた列の数字を設定</em>
        <strong>var</strong> list = <strong>new</strong> Array(25);
        <strong>for</strong> (<strong>var</strong> i = 0; i &lt; 5; i++) {
            list&#91;i * 5 + 0] = col_b&#91;i];
            list&#91;i * 5 + 1] = col_i&#91;i];
            list&#91;i * 5 + 2] = col_n&#91;i];
            list&#91;i * 5 + 3] = col_g&#91;i];
            list&#91;i * 5 + 4] = col_o&#91;i];
        }
        <em>// 中心はfreeで固定</em>
        list&#91;12] = 'free';
        <strong>return</strong> list;
    };
    
    <em>// カード作成関数</em>
    <strong>var</strong> create_card = <strong>function</strong> () {
        <em>// 取ってきた数字が入ったtableをhtmlに出力する</em>
        <strong>var</strong> table = make_table();
        <strong>for</strong> (<strong>var</strong> i = 0; i &lt; table.length; i++) {
            $('#bi' + i).text(table&#91;i]);
        }
    };

    <em>// 初期化関数</em>
    <strong>var</strong> init = <strong>function</strong> () {
        create_card();
        
        <em>// チェック状態を外す</em>
        $('#bingo td').each(<strong>function</strong> () {
            $(<strong>this</strong>).removeClass('check');
        });
    };
    
    <em>// 初期</em>
    init();
    
    <em>// カード作成 ボタンをクリックすると、初期化</em>
    $('#bingo-create').click(<strong>function</strong> () {
        init();
    });
    
    <em>// 番号をクリックすると、スタイルを変更するクラスをつけ外しできる</em>
    $('#bingo td').click(<strong>function</strong> (){
        $(<strong>this</strong>).toggleClass('check');
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p>こちらが作成したビンゴカードです。</p>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/bingo1/" target="_blank">デモページはこちら<br><img loading="lazy" decoding="async" width="370" height="470" src="https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f.png" alt="" class="wp-image-1168" srcset="https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f.png 370w, https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f-236x300.png 236w" sizes="auto, (max-width: 370px) 100vw, 370px" /></a></strong><br></p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">番号をクリックすると見た目が変更</span></strong>されます。<br>（押し間違い対策でもう一度番号をクリックすると元に戻ります。）<br>カードをリセットしたい場合は、<strong><span style="color:#b78d4a" class="has-inline-color">「カード変更」</span></strong>ボタンをクリックすると、初期化されます。</p>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>今回はJavaScriptを使って、ビンゴカードを作成してみました。<br>列がそろったらBINGO！の表示を追加するのも面白いですね！<br>近いうちに試してみたいと思います。</p>



<p>次回の記事も良かったらご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1194/" title="【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/63-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/63-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JSでビンゴマシンを作成してみましたのでサンプルコードをご紹介します。簡単にできて解説もついて分かりやすくしています。ビンゴカード作成の記事もありますので、良かったら見てみてください♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.09</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1016/">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1016/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】object-fit,object-positionのIE対応【object-fit-images】</title>
		<link>https://nyanblog2222.com/programming/javascript/965/</link>
					<comments>https://nyanblog2222.com/programming/javascript/965/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 27 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[object-fit]]></category>
		<category><![CDATA[object-fit-images]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=965</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回まで、CSSのobject-fit、object-positionプロパティの使い方をご紹介しました。 ただし、前回までの記事でも記載したように、このプロパティはIEには対応しておらず、別途対応する必要があります。今 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/965/">【CSS】object-fit,object-positionのIE対応【object-fit-images】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回まで、CSSの<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionプロパティ</span></strong>の使い方をご紹介しました。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/884/" title="【CSS】object-fitの使い方【img要素の縦横比固定方法】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-fitの使い方【img要素の縦横比固定方法】</div><div class="blogcard-snippet internal-blogcard-snippet">CSSに「object-fit」プロパティで「cover」を設定することにより、画像の縦横比を固定したまま指定サイズで画像を配置する方法を紹介します。他にも「object-fit」プロパティにてどのように配置するか設定することも可能。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.24</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/928/" title="【CSS】object-positionの使い方【img要素の画像配置設定】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-positionの使い方【img要素の画像配置設定】</div><div class="blogcard-snippet internal-blogcard-snippet">img要素などの置換要素に対して、コンテンツをどこに配置するかを設定する「object-position」プロパティを詳しく紹介します。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.26</div></div></div></div></a>
</div></figure>



<p>ただし、前回までの記事でも記載したように、このプロパティはIEには対応しておらず、別途対応する必要があります。<br>今回はIEに対応させる<strong><span style="color:#b78d4a" class="has-inline-color">object-fit-images</span></strong>を使用して、<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionプロパティを有効</span></strong>にできる方法を紹介していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-64" checked><label class="toc-title" for="toc-checkbox-64">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">object-fit-imagesライブラリを有効にする</a><ol><li><a href="#toc2" tabindex="0">CDNを貼り付ける</a></li><li><a href="#toc3" tabindex="0">ダウンロードしたファイルを読み込む</a></li></ol></li><li><a href="#toc4" tabindex="0">img要素にクラスを追加</a></li><li><a href="#toc5" tabindex="0">CSSに”font-family”プロパティを設定</a></li><li><a href="#toc6" tabindex="0">JavaScriptの記述を追加</a></li><li><a href="#toc7" tabindex="0">処理結果</a></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">object-fit-imagesライブラリを有効にする</span></h2>



<p>まずは、object-fit-imagesライブラリを有効にしていきます。<br>方法は2つあり、<br>1つはCDNを読み込む方法。<br>もう1つはダウンロードしたファイルを読み込む方法。です。</p>



<h3 class="wp-block-heading"><span id="toc2">CDNを貼り付ける</span></h3>



<p>CDNとは、<strong><span style="color:#b78d4a" class="has-inline-color">「Content Delivery Network」</span></strong>の頭文字を取った略称で、<strong><span style="color:#b78d4a" class="has-inline-color">「コンテンツ配信ネットワーク」</span></strong>を指します。<br>簡単に言うと、<strong><span style="color:#b78d4a" class="has-inline-color">ネットワーク上に配置されているファイルにアクセスできる仕組み</span></strong>のことです。<br>この仕組みを使うとサーバの負荷を一部肩代わりしてくれるようになるため、レスポンスが早くなると言われています。</p>



<p>htmlにscript要素を使って、CDNを読み込ませます。</p>



<pre class="wp-block-code html"><code>&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/object-fit-images/3.2.4/ofi.js"&gt;&lt;/script&gt;</code></pre>



<h3 class="wp-block-heading"><span id="toc3">ダウンロードしたファイルを読み込む</span></h3>



<p>こちらのサイトから<strong><span style="color:#b78d4a" class="has-inline-color">「Clone or download」</span></strong>をクリックしてダウンロードしてください。<br><a rel="noopener" class="link" href="https://github.com/bfred-it/object-fit-images" target="_blank">https://github.com/bfred-it/object-fit-images</a></p>



<p>ダウンロードしたファイルの中から<strong><span style="color:#b78d4a" class="has-inline-color">「ofi.js」</span></strong>ファイルを読み込む設定をhtmlのscript要素で設定します。</p>



<pre class="wp-block-code html"><code>&lt;script src="ofi.min.js"&gt;&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">img要素にクラスを追加</span></h2>



<p>object-fit、object-positionプロパティを使用するimg要素にクラスを追加します。<br><strong><span style="color:#b78d4a" class="has-inline-color">クラス名は任意で問題ない</span></strong>ので、既にクラスを指定している場合はそのクラスを使っても大丈夫です。</p>



<pre class="wp-block-code html"><code>&lt;img src="img/01.jpg" class="object-image"&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc5">CSSに”font-family”プロパティを設定</span></h2>



<p>2～5行目まではimgのサイズ設定と処理結果が分かりやすいように、背景色と境界線を設定しています。</p>



<p>7、8行目：object-fit、object-positionプロパティを設定しています。<br>10行目：IE用に<strong><span style="color:#b78d4a" class="has-inline-color">「font-family」プロパティ</span></strong>を設定します。値は7、8行目で設定した値と同じ値を設定します。</p>



<pre class="wp-block-code css"><code><strong>object-image</strong>{
    width: 400px;
    height: 300px;
    background-color: #999;
    border: 1px solid #666;

    object-fit: none;
    object-position: right;
    // IEのブラウザに対応
    font-family: 'object-fit: none; object-position: right;';
}</code></pre>



<p>10行目があれば、7、8行目は不要なのかも？と思い、試してみましたが、<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionが反映されなかった</span></strong>ので、別々に記述が必要みたいです。</p>



<h2 class="wp-block-heading"><span id="toc6">JavaScriptの記述を追加</span></h2>



<p>htmlファイル内の&lt;/body&gt;の直前にscript要素を追加し、objectFitImages関数を呼び出します。</p>



<p>全てのimg要素に対応させる場合は引数なし。<br>任意のクラスに画像を対応させたい場合は引数に<strong><span style="color:#b78d4a" class="has-inline-color">「img.クラス名」</span></strong>を設定します。<br>※ クラス名のみでは、反映されないので、注意してください。</p>



<pre class="wp-block-code"><code>// 全てのimg要素に対応
&lt;script&gt;
    objectFitImages();
&lt;/script&gt;

// 指定のimg要素のクラスに対応
&lt;script&gt;
    objectFitImages('img.object-image');
&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc7">処理結果</span></h2>



<p>ここまで設定が終わりましたら、処理結果を見てみましょう。<br><strong><span style="color:#b78d4a" class="has-inline-color">このページをIEで開き</span></strong>、対応前と比較して<strong><span style="color:#b78d4a" class="has-inline-color">対応後ではobject-fitが効いていること</span></strong>を確認してみてください。<br>他のブラウザでは対応前と対応後では一緒の動きをしています。</p>



<p>object-fit-images対応前</p>



<style type="text/css">
    <!--
img.sample{
    width: 400px;
    height: 300px;

    /* imgのサイズを分かりやすくするため、background-color、
       borderを設定し、object-fitはnoneを設定しています。 */
    background-color: #999;
    border: 1px solid #666;
    object-fit: none;
    object-position: right;
}

    -->
</style>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit-image確認" class="sample">



<p>object-fit-images対応後</p>



<script src="https://cdnjs.cloudflare.com/ajax/libs/object-fit-images/3.2.4/ofi.js"></script>
<style type="text/css">
    <!--
img.object-image{
    width: 400px;
    height: 300px;

    /* imgのサイズを分かりやすくするため、background-color、
       borderを設定し、object-fitはnoneを設定しています。 */
    background-color: #999;
    border: 1px solid #666;
    object-fit: none;
    object-position: right;
    font-family: 'object-fit: none; object-position: right;';
}

    -->
</style>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit-image確認" class="object-image">

<script>
    objectFitImages('img.object-image');
</script>



<h2 class="wp-block-heading"><span id="toc8">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回は「object-fit-imagesライブラリ」を使って、IEのブラウザにobject-fitを対応させてみました。<br><s>まだまだIEのブラウザは使用されているので、対応させて損はないと思います。</s><br>※<span class="bold-red"> 2022年6月15日でサポート終了予定</span></p>



<p>4つの簡単なステップで対応ができるので、良かったら試してみてください。</p>



<p>今回の記事が何かの参考になれば幸いです。<br>ご来訪ありがとうございました。それでは♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/965/">【CSS】object-fit,object-positionのIE対応【object-fit-images】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/965/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】console.logでデバッグ【フォーマット文字列】</title>
		<link>https://nyanblog2222.com/programming/javascript/822/</link>
					<comments>https://nyanblog2222.com/programming/javascript/822/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 23 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Console.log]]></category>
		<category><![CDATA[デバッグ]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=822</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。前回はconsole.log関数を使って、基本的なデバッグ方法をご紹介しました。詳しくは良かったらこちらの記事をご覧ください。 今回は、%s, %d, %f, %oなどのフォーマット文字列を使って変数でデバッ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/822/">【JavaScript】console.logでデバッグ【フォーマット文字列】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回はconsole.log関数を使って、基本的なデバッグ方法をご紹介しました。<br>詳しくは良かったらこちらの記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/775/" title="【JavaScript】デバッグ中に値を確認してみよう！【console.log】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/77-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/77-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】デバッグ中に値を確認してみよう！【console.log】</div><div class="blogcard-snippet internal-blogcard-snippet">プログラム中にデバッグをしていますか？今回は基本的な方法でブラウザでコンソールウィンドウを表示させ、デバッグできる、console.log関数の使い方を説明していきます。特に初心者の方へぜひ見ていただきたいです。デバッグとは、プログラム開発の際に発生したバグ（不具合、誤り）を見つけ、修正する作...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.21</div></div></div></div></a>
</div></figure>



<p><br>今回は、<strong><span style="color:#b78d4a" class="has-inline-color">%s, %d, %f, %oなどのフォーマット文字列</span></strong>を使って変数でデバッグをしてみましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-66" checked><label class="toc-title" for="toc-checkbox-66">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">%s 文字列を出力</a></li><li><a href="#toc2" tabindex="0">%d, %i, %f 数値を出力</a></li><li><a href="#toc3" tabindex="0">%o(%O) オブジェクトを出力</a></li><li><a href="#toc4" tabindex="0">%c コンソールの出力を装飾</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">%s 文字列を出力</span></h2>



<p>%sを使って、<strong><span style="color:#b78d4a" class="has-inline-color">文字列を出力</span></strong>します。<br>こちらはソースコードの記述例です。</p>



<pre class="wp-block-code javascript"><code><strong>var</strong> temp1 = "sample";
<strong>var</strong> temp2 = "文字列";

console.log("temp1 : %s", temp1)
console.log("temp2 : %s", temp2)</code></pre>



<p>このように<strong><span style="color:#b78d4a" class="has-inline-color">%sを設定した箇所</span></strong>に、<strong><span style="color:#b78d4a" class="has-inline-color">第2引数で設定した変数の値が出力</span></strong>されています。</p>



<pre class="wp-block-code plaintext"><code>temp1 : sample
temp2 : 文字列</code></pre>



<h2 class="wp-block-heading"><span id="toc2">%d, %i, %f 数値を出力</span></h2>



<p>%d, %i, %fを使って<strong><span style="color:#b78d4a" class="has-inline-color">数値を出力</span></strong>します。<br><strong><span style="color:#b78d4a" class="has-inline-color">%d, %i</span></strong> : 整数値を出力<br><strong><span style="color:#b78d4a" class="has-inline-color">%f</span></strong> : 浮動小数点数値を出力<br>こちらはソースコードの記述例です。</p>



<pre class="wp-block-code javascript"><code><strong>var</strong> num1 = 123;
<strong>var</strong> float1 = 234.56;

<strong>var</strong> format_d = "%d";
<strong>var</strong> format_i = "%i";
<strong>var</strong> format_f = "%f";

<em>// 整数を%d, %iで出力</em>
console.log("%s : %d" + "\r\n%s : %i", format_d, num1, format_i, num1)

<em>// 小数を%d, %iで出力</em>
console.log("%s : %d" + "\r\n%s : %i", format_d, float1, format_i, float1)

<em>// 整数、小数を%f, %fで出力</em>
console.log("%s : %f" + "\r\n%s : %f", format_f, num1, format_f, float1)</code></pre>



<p>コメントにも記載していますが、</p>



<p>1. <strong><span style="color:#b78d4a" class="has-inline-color">整数</span></strong>を<strong><span style="color:#b78d4a" class="has-inline-color">%d, %i</span></strong>で表示させた場合<br>2. <strong><span style="color:#b78d4a" class="has-inline-color">小数</span></strong>を<strong><span style="color:#b78d4a" class="has-inline-color">%d, %i</span></strong>で表示させた場合<br>3. <strong><span style="color:#b78d4a" class="has-inline-color">整数、小数</span></strong>を<strong><span style="color:#b78d4a" class="has-inline-color">%f</span></strong>で表示させた場合</p>



<p>のパターンで記述しているのを確認できます。<br>この実行結果のように、<strong><span style="color:#b78d4a" class="has-inline-color">小数の値を%d, %iで出力させると、小数部分が切り捨てされてしまう</span></strong>ので、注意しましょう。</p>



<pre class="wp-block-code plaintext"><code>// 整数を%d, %iで出力
%d : 123
%i : 123

// 小数を%d, %iで出力
%d : 234
%i : 234

// 整数、小数を%fで出力
%f : 123
%f : 234.56</code></pre>



<h2 class="wp-block-heading"><span id="toc3">%o(%O) オブジェクトを出力</span></h2>



<p>%o(%O)を使って、<strong><span style="color:#b78d4a" class="has-inline-color">オブジェクトを出力</span></strong>します。<br>オブジェクトをクリックすることで、詳細情報を確認することができます。<br>こちらはソースコードの記述例です。</p>



<pre class="wp-block-code javascript"><code><strong>var</strong> obj = {
    hoge1: 'value1'
   , hoge2: 'value2'
   , hoge3: 'value3'
   , hoge4: 'value4'
};
console.log("オブジェクト : %O", obj)

<strong>var</strong> url = "https://nyanblog2222.com/"
console.log("URL : %o", url)</code></pre>



<p><strong><span class="has-inline-color has-pale-pink-color">赤枠</span></strong>内のように<strong><span style="color:#b78d4a" class="has-inline-color">オブジェクトの要素を確認したり、URLをクリックして、実際にどこのページへジャンプしたり</span></strong>、確認することができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="488" height="231" src="https://nyanblog2222.com/wp-content/uploads/2020/05/241560eb41110cd55be45ebcadaf8e9f.png" alt="コンソール画面　オブジェクトの中身" class="wp-image-873" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/241560eb41110cd55be45ebcadaf8e9f.png 488w, https://nyanblog2222.com/wp-content/uploads/2020/05/241560eb41110cd55be45ebcadaf8e9f-300x142.png 300w" sizes="auto, (max-width: 488px) 100vw, 488px" /></figure>



<h2 class="wp-block-heading"><span id="toc4">%c コンソールの出力を装飾</span></h2>



<p>%cを使って、<strong><span style="color:#b78d4a" class="has-inline-color">%c以降の記述にスタイルを設定</span></strong>することができます。<br>こちらはソースコードの記述例です。</p>



<pre class="wp-block-code"><code>console.log("ここまでのtextは反映無し %cここからstyleが反映されます。"
    , "padding: 5px; color: #FFF0ED; font-weight: bold; background-color: #47A4A5;");</code></pre>



<p><strong><span class="has-inline-color has-pale-pink-color">赤枠</span></strong>内のように、<strong><span style="color:#b78d4a" class="has-inline-color">%c以降に設定したスタイルが適用</span></strong>されていることが確認できますね。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="604" height="118" src="https://nyanblog2222.com/wp-content/uploads/2020/05/b107e2d1f0eef8df294dffc8569d4392.png" alt="コンソール画面　スタイル設定" class="wp-image-875" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/b107e2d1f0eef8df294dffc8569d4392.png 604w, https://nyanblog2222.com/wp-content/uploads/2020/05/b107e2d1f0eef8df294dffc8569d4392-300x59.png 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></figure>



<h2 class="wp-block-heading"><span id="toc5">まとめ</span></h2>



<p>前回に引き続き、console.log関数の使い方について、ご紹介いたしました。<br>色々な方法で、変数の中身を確認することができるのですね！<br>%dや%iでは、桁数を色々変えて実際の値を見てみたり、%cでは、そのスタイルなら適用できるのかを確認したりするのも、面白いと思います！</p>



<p>それでは、本記事をご覧いただき、ありがとうございました。<br>次回は、console内の他の関数の使い方について、ご紹介していきたいと思います。<br>良ければ次回もご覧ください。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/822/">【JavaScript】console.logでデバッグ【フォーマット文字列】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/822/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】デバッグ中に値を確認してみよう！【console.log】</title>
		<link>https://nyanblog2222.com/programming/javascript/775/</link>
					<comments>https://nyanblog2222.com/programming/javascript/775/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 21 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=775</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/77.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/77.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />皆さん、プログラム中にデバッグをしていますか？今回は基本的な方法でブラウザでコンソールウィンドウを表示させ、デバッグできる、console.log関数の使い方を説明していきます。 目次 デバッグについてブラウザのデバッグ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/775/">【JavaScript】デバッグ中に値を確認してみよう！【console.log】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/77.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/77.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/77-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>皆さん、プログラム中にデバッグをしていますか？<br>今回は基本的な方法でブラウザでコンソールウィンドウを表示させ、デバッグできる、<strong><span style="color:#b78d4a" class="has-inline-color">console.log関数</span></strong>の使い方を説明していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-68" checked><label class="toc-title" for="toc-checkbox-68">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">デバッグについて</a></li><li><a href="#toc2" tabindex="0">ブラウザのデバッグツールの表示方法</a><ol><li><a href="#toc3" tabindex="0">Google Chromeの方法</a></li><li><a href="#toc4" tabindex="0">Microsoft Edgeの方法</a></li><li><a href="#toc5" tabindex="0">Internet Explorerの方法</a></li><li><a href="#toc6" tabindex="0">Firefoxの方法</a></li></ol></li><li><a href="#toc7" tabindex="0">console.log関数の使い方</a><ol><li><a href="#toc8" tabindex="0">文字列を表示</a></li><li><a href="#toc9" tabindex="0">変数を表示</a></li><li><a href="#toc10" tabindex="0">配列や連想配列を表示</a></li></ol></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">デバッグについて</span></h2>



<p>まずは<strong><span style="color:#b78d4a" class="has-inline-color">「デバッグ」</span></strong>についての説明です。<br>デバッグとは、<strong><span style="color:#b78d4a" class="has-inline-color">プログラム開発の際に発生したバグ（不具合、誤り）を見つけ、修正する作業</span></strong>のことを指します。</p>



<p>JavaScriptではブラウザの機能にデバッグするためのツールが搭載されており、簡単にデバッグすることができます。<br>他にも、alertで画面に出力させる方法だったり、プログラムを別途記述する方法だったりありますが、基本的にはブラウザのデバッグツールを使うことが多いと思います。<br>本記事では<strong><span style="color:#b78d4a" class="has-inline-color">各ブラウザで搭載されているデバッグツールを使ったデバッグ方法</span></strong>を紹介していきます。</p>



<h2 class="wp-block-heading"><span id="toc2">ブラウザのデバッグツールの表示方法</span></h2>



<p>まずは各ブラウザのデバッグツールを表示する方法です。</p>



<h3 class="wp-block-heading"><span id="toc3">Google Chromeの方法</span></h3>



<p>１．Webサイトを表示させ、<strong><span style="color:#b78d4a" class="has-inline-color">「右クリック」</span></strong>→<strong><span style="color:#b78d4a" class="has-inline-color">「検証」</span></strong>をクリック<br>他の方法では、<br>　・ショートカットキーから<br>　　Windows：<strong><span style="color:#b78d4a" class="has-inline-color">「F12」キー</span></strong>　<br>　　　　　　　  <strong><span style="color:#b78d4a" class="has-inline-color">「Ctrl」+「Shift」+「I」キー</span></strong><br>　　Mac：<strong><span style="color:#b78d4a" class="has-inline-color">「Command」+「Option」+「I」キー</span></strong><br>　・Google Chromeの設定から<br>　　右上の<strong><span style="color:#b78d4a" class="has-inline-color">縦3点ボタン「…」</span></strong>をクリック<br>　　→<strong><span style="color:#b78d4a" class="has-inline-color">「その他のツール」</span></strong>をクリック<br>　　→<strong><span style="color:#b78d4a" class="has-inline-color">「デベロッパー　ツール」</span></strong>をクリック</p>



<p>２．表示された画面の<strong><span style="color:#b78d4a" class="has-inline-color">「Console」タブ</span></strong>をクリック</p>



<h3 class="wp-block-heading"><span id="toc4">Microsoft Edgeの方法</span></h3>



<p>１．<strong><span style="color:#b78d4a" class="has-inline-color">「F12」キー</span></strong>をクリック<br>他の方法では、<br>　右上の<strong><span style="color:#b78d4a" class="has-inline-color">「…」ボタン</span></strong>をクリック<br>　→　<strong><span style="color:#b78d4a" class="has-inline-color">「その他のツール」</span></strong>をクリック<br>　→　<strong><span style="color:#b78d4a" class="has-inline-color">「開発者ツール」</span></strong>をクリック</p>



<p>２．表示された画面の<strong><span style="color:#b78d4a" class="has-inline-color">「コンソール」タブ</span></strong>をクリック</p>



<h3 class="wp-block-heading"><span id="toc5">Internet Explorerの方法</span></h3>



<p>１．<strong><span style="color:#b78d4a" class="has-inline-color">「F12」キー</span></strong>をクリック<br>他の方法では、<br>　右上の<strong><span style="color:#b78d4a" class="has-inline-color">「歯車ボタン」</span></strong>をクリック<br>　→<strong><span style="color:#b78d4a" class="has-inline-color">「F12 開発者ツール」</span></strong>をクリック</p>



<p>２．表示された画面の<strong><span style="color:#b78d4a" class="has-inline-color">「コンソール」タブ</span></strong>をクリック</p>



<h3 class="wp-block-heading"><span id="toc6">Firefoxの方法</span></h3>



<p>１．<strong><span style="color:#b78d4a" class="has-inline-color">「F12」キー</span></strong>をクリック<br>他の方法では、<br>　右上の<strong><span style="color:#b78d4a" class="has-inline-color">「三」ボタン</span></strong>をクリック<br>　→<strong><span style="color:#b78d4a" class="has-inline-color">「ウェブ開発」</span></strong>をクリック<br>　→<strong><span style="color:#b78d4a" class="has-inline-color">「開発ツールを表示」</span></strong>をクリック</p>



<p>２．表示された画面の<strong><span style="color:#b78d4a" class="has-inline-color">「コンソール」タブ</span></strong>をクリック</p>



<h2 class="wp-block-heading"><span id="toc7">console.log関数の使い方</span></h2>



<p>ここでは<strong><span style="color:#b78d4a" class="has-inline-color">console.log関数</span></strong>の基本的な使い方を説明します。<br>コンソールは<strong><span style="color:#b78d4a" class="has-inline-color">「Google Chrome」</span></strong>の画面を表示させています。</p>



<h3 class="wp-block-heading"><span id="toc8">文字列を表示</span></h3>



<p>まずは文字列を表示させてみましょう。<br>JavaScriptでこのコードを記述してください。</p>



<pre class="wp-block-code javascript"><code>console.log("Hello world!")</code></pre>



<p>するとページには何も表示されていませんが、コンソール画面では、<strong><span style="color:#b78d4a" class="has-inline-color">&#8220;Hello world!&#8221;</span></strong>が表示されています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="615" height="100" src="https://nyanblog2222.com/wp-content/uploads/2020/05/fd15e5ebfd9d34b763185e78771592c6-1.png" alt="Hello world 出力" class="wp-image-810" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/fd15e5ebfd9d34b763185e78771592c6-1.png 615w, https://nyanblog2222.com/wp-content/uploads/2020/05/fd15e5ebfd9d34b763185e78771592c6-1-300x49.png 300w" sizes="auto, (max-width: 615px) 100vw, 615px" /></figure>



<h3 class="wp-block-heading"><span id="toc9">変数を表示</span></h3>



<p>続いて、変数の中身を確認する方法です。<br>こちらのコードを記述してください。</p>



<pre class="wp-block-code"><code><strong>var</strong> str = "変数strの中身";
console.log(str)

<strong>for</strong>(<strong>var</strong> i=1; i&lt;=5; i++){
    console.log(i)
}</code></pre>



<p>こちらがコンソール画面です。<br>このように引数に変数を設定することで、<strong><span style="color:#b78d4a" class="has-inline-color">strやiの中身を確認</span></strong>することができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="535" height="168" src="https://nyanblog2222.com/wp-content/uploads/2020/05/e39b23a713f4dee2031d3a377bfc042d-1.png" alt="コンソール画面　変数の確認" class="wp-image-812" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/e39b23a713f4dee2031d3a377bfc042d-1.png 535w, https://nyanblog2222.com/wp-content/uploads/2020/05/e39b23a713f4dee2031d3a377bfc042d-1-300x94.png 300w" sizes="auto, (max-width: 535px) 100vw, 535px" /></figure>



<h3 class="wp-block-heading"><span id="toc10">配列や連想配列を表示</span></h3>



<p>最後に配列や連想配列の表示を確認してみましょう。<br>こちらのコードを記述してください。</p>



<pre class="wp-block-code"><code><strong>var</strong> array = &#91;
    'apple'
    , 'lemon'
    , 'peach'
];
console.log(array)

<strong>var</strong> obj = {
    hoge1: 'value1'
   , hoge2: 'value2'
   , hoge3: 'value3'
   , hoge4: 'value4'
};
console.log(obj)</code></pre>



<p>こちらがコンソール画面です。<br><strong><span style="color:#b78d4a" class="has-inline-color">配列や連想配列の中身</span></strong>だけでなく、配列は<strong><span style="color:#b78d4a" class="has-inline-color">lengthプロパティ</span></strong>の値や<strong><span style="color:#b78d4a" class="has-inline-color">__proto__プロパティ</span></strong>も確認することができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="604" height="282" src="https://nyanblog2222.com/wp-content/uploads/2020/05/54e70b7373f571aea4383a50c25b94d1.png" alt="コンソール画面　配列、連想配列の確認" class="wp-image-819" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/54e70b7373f571aea4383a50c25b94d1.png 604w, https://nyanblog2222.com/wp-content/uploads/2020/05/54e70b7373f571aea4383a50c25b94d1-300x140.png 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></figure>



<h2 class="wp-block-heading"><span id="toc11">まとめ</span></h2>



<p>いかがでしたでしょうか。<br>今回は基本的な内容でしたが、コンソール画面でデバッグ操作を実行してみました。</p>



<p>個人的には開発速度を向上させるには、デバッグ作業がどれだけ早くできるかどうか。だと思っています。<br>これを機にデバッグ操作能力を向上させてもいいかもしれませんね！<br>良ければ次回の記事もご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/822/" title="【JavaScript】console.logでデバッグ【フォーマット文字列】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/78_new-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】console.logでデバッグ【フォーマット文字列】</div><div class="blogcard-snippet internal-blogcard-snippet">前回はconsole.log関数を使って、基本的なデバッグ方法をご紹介しました。今回は、%s, %d, %f, %oなどのフォーマット文字列を使って変数でデバッグをしてみましょう。1.%s 文字列を出力 2.%d, %i, %f 数値を出力 3.%o(%O) オブジェクトを出力 4.%c コン...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.23</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/775/">【JavaScript】デバッグ中に値を確認してみよう！【console.log】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/775/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Raindrops.js】水面の動きを表現したプラグインの使い方【JQuery】</title>
		<link>https://nyanblog2222.com/programming/javascript/345/</link>
					<comments>https://nyanblog2222.com/programming/javascript/345/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 08 May 2020 09:00:31 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=345</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/76_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/76_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はRaindrops.jsという、水面の動きを表現したプラグインをご紹介いたします。このプラグインは雨が水面に滴るような動きを表現しており、清涼感を表現することができそうですね！では、さっそく使い方をご紹 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/345/">【Raindrops.js】水面の動きを表現したプラグインの使い方【JQuery】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/76_new.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/76_new.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/76_new-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回は<strong><span style="color:#b78d4a" class="has-inline-color">Raindrops.js</span></strong>という、水面の動きを表現したプラグインをご紹介いたします。<br>このプラグインは雨が水面に滴るような動きを表現しており、清涼感を表現することができそうですね！<br>では、さっそく使い方をご紹介いたします。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-70" checked><label class="toc-title" for="toc-checkbox-70">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTMLで形を作る</a></li><li><a href="#toc2" tabindex="0">CSSでスタイルを設定</a></li><li><a href="#toc3" tabindex="0">htmlへjsファイルの読み込みを設定</a></li><li><a href="#toc4" tabindex="0">JSファイルにオプションを設定</a></li><li><a href="#toc5" tabindex="0">Raindropsのオプション</a></li><li><a href="#toc6" tabindex="0">デモ</a></li><li><a href="#toc7" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTMLで形を作る</span></h2>



<p>今回は簡単にdivで表現枠を作成しています。</p>



<pre class="wp-block-code html"><code>&lt;div class="wrapper"&gt;
    // canvas_wrapperクラスのdivにJQueryで動きをつけたcanvasが設定されます。
    &lt;div class="canvas_wrapper"&gt;
    &lt;/div&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSSでスタイルを設定</span></h2>



<p>cssでdivタグにサイズを設定するのと、動きを分かりやすくするため、画像と背景色を設定します。</p>



<pre class="wp-block-code css"><code>// <strong>div</strong>を中央寄せ
.wrapper {
    max-width: 1024px;
    margin: 0 auto;
}

.canvas_wrapper {
    // サイズの設定
    max-width: 1024px;
    height: 600px;

    // お好みで背景の設定をしてください。
    background: url(../img/main_visual.jpg) center center / cover no-repeat #fff;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">htmlへjsファイルの読み込みを設定</span></h2>



<p>今回指定するのは、4つのjsファイルです。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">JQuery</span></strong>　（ライブラリ）</li><li><strong><span style="color:#b78d4a" class="has-inline-color">JQuery UI</span></strong>　（ライブラリ）</li><li><span style="color:#b78d4a" class="has-inline-color"><strong>Raindrops</strong></span>　（プラグイン）</li><li>オプション設定用のjsファイル</li></ul>



<p>今回は<strong><span style="color:#b78d4a" class="has-inline-color">Raindrops.jsプラグイン</span></strong>を使用するため、別途JQuery、JQuery UIのライブラリが必要になります。</p>



<p>HTMLへの設定は、<br><a class="link" href="https://developers.google.com/speed/libraries/">Google Ajax Libraries API</a>&nbsp;を使用して、ライブラリの読み込みを設定しています。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">Raindrops.js</span></strong>プラグインは、<br><a rel="noopener" class="link broken_link" href="https://daniellaharel.com/raindrops/" target="_blank">こちら</a>からダウンロードして読み込みの設定をしましょう。</p>



<p>読み込み設定注意点として、<strong><span style="color:#b78d4a" class="has-inline-color">読み込む順番にも決まり</span></strong>がありますので、以下の順番で設定してください。</p>



<pre class="wp-block-code html"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"&gt;&lt;/script&gt;
&lt;script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"&gt;&lt;/script&gt;
&lt;script src="js/raindrops.js"&gt;&lt;/script&gt;
&lt;script src="js/style.js"&gt;&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">JSファイルにオプションを設定</span></h2>



<p>HTMLのdivタグに設定した、canvas_wrapperクラスに対し、Raindropsのオプションを設定したら、簡単に表現することができました。</p>



<pre class="wp-block-code javascript"><code>$(<strong>function</strong>(){
	$(".canvas_wrapper").raindrops();
});</code></pre>



<h2 class="wp-block-heading"><span id="toc5">Raindropsのオプション</span></h2>



<p>このように指定することで、詳細なオプションを設定することができます。</p>



<pre class="wp-block-code javascript"><code>$(".canvas_wrapper").raindrops({
    color:"#fff",
    canvasHeight:200,
    rippleSpeed: 0.05,
    density: 0.04
});</code></pre>



<p>オプションの設定については以下の通りです。</p>



<figure class="wp-block-table">
    <table>
        <tbody>
            <tr>
                <th class="text-aline-center">オプション</th>
                <th class="text-aline-center">説明</th>
            </tr>
            <tr>
                <th>color</th>
                <td>水の色を指定</td>
            </tr>
            <tr>
                <th>waveLength</th>
                <td>波長を数値で指定します。<br>数値が大きいほど、波長は短い。<br>初期設定は340。</td>
            </tr>
            <tr>
                <th>frequency</th>
                <td>雨粒の頻度を指定。<br>数値が大きいほど、雨滴が頻繁に発生。<br>初期設定は3。</td>
            </tr>
            <tr>
                <th>waveHeight</th>
                <td>波の高さ。<br>数値が大きいほど、雨滴によって生成される波が高くなる。<br>初期設定は100。</td>
            </tr>
            <tr>
                <th>density</th>
                <td>水の密度。<br>数値が大きいほど、波紋が短くなる。<br>初期設定は0.02。</td>
            </tr>
            <tr>
                <th>rippleSpeed</th>
                <td>波及効果の速度。<br>数値が大きいほど、波紋が速い。<br>初期設定は0.1。</td>
            </tr>
            <tr>
                <th>canvasWidth</th>
                <td>canvasの幅。<br>初期設定は親の幅の100%。</td>
            </tr>
            <tr>
                <th>canvasHeight</th>
                <td>canvasの高さ。<br>初期設定は親の高さの50%。</td>
            </tr>
            <tr>
                <th>rightPadding</th>
                <td>アニメーションによる、canvasの左右の余白を指定。<br>初期設定は20。</td>
            </tr>
            <tr>
                <th>position</th>
                <td>canvasに指定されるpositionの値。<br>初期値は&#8221;absolute&#8221;。</td>
            </tr>
            <tr>
                <th>positionBottom</th>
                <td>canvasに指定されるBottomの値。<br>初期値は0。</td>
            </tr>
            <tr>
                <th>positionLeft</th>
                <td>canvasに指定されるLeftの値。<br>初期値は0。</td>
            </tr>
        </tbody>
    </table>
    <p>参考：<a rel="noopener" class="link broken_link" href="https://daniellaharel.com/raindrops/#documentation" target="_blank">Raindorops ドキュメント</a></p>
</figure>



<h2 class="wp-block-heading"><span id="toc6">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/raindrops/" target="_blank">デモページはこちら</a></strong>です。</p>



<h2 class="wp-block-heading"><span id="toc7">まとめ</span></h2>



<p>今回はJqueryのプラグイン<strong><span style="color:#b78d4a" class="has-inline-color">【Raindrops.js】</span></strong>について、ご紹介しました。<br>組み込みも設定も簡単にできるので、ぜひ参考にして、試してみてください！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/345/">【Raindrops.js】水面の動きを表現したプラグインの使い方【JQuery】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/345/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JQuery】スムーススクロールでふわっとページ移動してみよう</title>
		<link>https://nyanblog2222.com/programming/javascript/73/</link>
					<comments>https://nyanblog2222.com/programming/javascript/73/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 29 Apr 2020 09:02:38 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=73</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/71.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/71.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。JQueryを使用して簡単に出来るスムーススクロールをご紹介いたします。 目次 HTMLで形を作るCSSでスタイルを設定JQueryをhtmlへ設定するJQueryでイベントを設定する HTMLで形を作る ま [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/73/">【JQuery】スムーススクロールでふわっとページ移動してみよう</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/71.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/71.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。JQueryを使用して簡単に出来るスムーススクロールをご紹介いたします。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-72" checked><label class="toc-title" for="toc-checkbox-72">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTMLで形を作る</a></li><li><a href="#toc2" tabindex="0">CSSでスタイルを設定</a></li><li><a href="#toc3" tabindex="0">JQueryをhtmlへ設定する</a></li><li><a href="#toc4" tabindex="0">JQueryでイベントを設定する</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTMLで形を作る</span></h2>



<p>まずはHTMLでナビゲーションとセッションの形を作っていきます。</p>



<pre class="wp-block-code html"><code>&lt;div class="wrapper" id="top"&gt;
    &lt;h1&gt;スムーススクロール&lt;/h1&gt;
    &lt;nav&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href="#index1"&gt;index1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href="#index2"&gt;index2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href="#index3"&gt;index3&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href="#index4"&gt;index4&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/nav&gt;
&lt;/div&gt;
&lt;div class="wrapper" id="index1"&gt;
    &lt;h2&gt;Section1&lt;/h2&gt;
    &lt;p&gt;&lt;a href="#top"&gt;トップへ戻る&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wrapper" id="index2"&gt;
    &lt;h2&gt;Section2&lt;/h2&gt;
    &lt;p&gt;&lt;a href="#top"&gt;トップへ戻る&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wrapper" id="index3"&gt;
    &lt;h2&gt;Section3&lt;/h2&gt;
    &lt;p&gt;&lt;a href="#top"&gt;トップへ戻る&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wrapper" id="index4"&gt;
    &lt;h2&gt;Section4&lt;/h2&gt;
    &lt;p&gt;&lt;a href="#top"&gt;トップへ戻る&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSSでスタイルを設定</span></h2>



<p>次にCSSでスタイルを決定します。<br>ここではスクロールさせるため、ある程度セッションの高さを設けています。<br>また、スクロール後の位置がぴったりにならないようにwrapperクラスにpaddingを設定しています。</p>



<pre class="wp-block-code css"><code>*{
    box-sizing: border-box;
}

.wrapper{
    padding: 4rem;
    height: 1000px;
}

h1,h2{
    color: #666;
    margin-bottom: 2rem;
}

li{
    float: left;
    margin-right: 1.5rem;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">JQueryをhtmlへ設定する</span></h2>



<p>JQueryの設定を行います。<br>&lt;/body&gt;の直前にこのコードを入れます。</p>



<pre class="wp-block-code javascript"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"&gt;&lt;/script&gt;
&lt;script src="js/style.js"&gt;&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">JQueryでイベントを設定する</span></h2>



<p>JQueryでクリック時にスクロールさせる動作を追加します。<br>クリック時のイベントは　<strong><span style="color:#b78d4a" class="has-inline-color"><strong>&#8216;</strong>a[href^=#]:not([href=#])&#8217;</span></strong>　で条件を付けています。CSS3では条件を付けることができるので、簡単な条件であればこのように記載します。<br>ちなみに、 <strong><span style="color:#b78d4a" class="has-inline-color">a[href^=#]</span></strong> は#から始まる構文を指し、 <strong><span style="color:#b78d4a" class="has-inline-color">:not()</span></strong> 疑似クラスで <strong><span style="color:#b78d4a" class="has-inline-color">href=#</span></strong> のみの設定を除外しています。</p>



<p>次に移動する位置を取得しています。<br><span style="color:#b78d4a" class="has-inline-color"><strong>$(this).attr(&#8220;href&#8221;)</strong></span> は、クリックしたaタグのhref属性に設定されている値を取得し、<strong><span style="color:#b78d4a" class="has-inline-color">$(href).offset().top</span></strong> で先ほど取ってきたhref属性先の位置を設定しています。<br>そして、設定したposへanimateメソッドを用いてスクロールさせています。<br><strong><span style="color:#b78d4a" class="has-inline-color">return false</span></strong>で戻り値をfalse設定しているのは、リンク先へ移動する機能を動かさないよう無効にしているからです。</p>



<pre class="wp-block-code javascript"><code>$(function () {
    // #から始まらない場合、処理しない
    $("a&#91;href*=#]:not(&#91;href=#])").click(function () {
        // 移動する位置を取得
        var href = $(this).attr("href");
        var pos = $(href).offset().top;

        // スクロール処理
        $("html, body").animate({ scrollTop: pos }, 800);

        // リンク先へ移動する機能を無効化
        return false;
    });
});</code></pre>



<p>これでリンクをクリックするとゆっくりスクロールするスムーススクロールを実装することができました。<br>今回はJQueryで実装してみましたが、調べる中でブラウザが限定されてしまうようですが、CSSのみでも実装できるようなので試してみたいと思います。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/73/">【JQuery】スムーススクロールでふわっとページ移動してみよう</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/73/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JQuery】コピペでできるドロップダウンメニュー【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/32/</link>
					<comments>https://nyanblog2222.com/programming/javascript/32/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 28 Apr 2020 09:21:55 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=32</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/70.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/70.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。 今回はJQueryを使って簡単にコピペで出来るドロップダウンメニューをご紹介いたします。 目次 ナビゲーションをHTMLで作成するCSSでスタイルを設定Jqueryをhtmlへ設定するJQueryでイベント [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/32/">【JQuery】コピペでできるドロップダウンメニュー【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/70.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/70.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/70-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。</p>



<p>今回はJQueryを使って簡単にコピペで出来るドロップダウンメニューをご紹介いたします。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-74" checked><label class="toc-title" for="toc-checkbox-74">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ナビゲーションをHTMLで作成する</a></li><li><a href="#toc2" tabindex="0">CSSでスタイルを設定</a></li><li><a href="#toc3" tabindex="0">Jqueryをhtmlへ設定する</a></li><li><a href="#toc4" tabindex="0">JQueryでイベントを設定する</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ナビゲーションをHTMLで作成する</span></h2>



<p>メニューをul要素で作成しています。<br>各li要素内に子要素のナビゲーションを設定しています。</p>



<pre class="wp-block-code html"><code>&lt;nav&gt;
    &lt;ul id="global_nav"&gt;
        &lt;li class="#"&gt;&lt;a href="#"&gt;メニュー１&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー１ａ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー１ｂ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー１ｃ&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li class="#"&gt;&lt;a href="#"&gt;メニュー２&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー２ａ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー２ｂ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー２ｃ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー２ｄ&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li class="#"&gt;&lt;a href="#"&gt;メニュー３&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー３ａ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー３ｂ&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li class="#"&gt;&lt;a href="#"&gt;メニュー４&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー４ａ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー４ｂ&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li class="#"&gt;&lt;a href="#"&gt;メニュー５&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー５ａ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー５ｂ&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="#"&gt;メニュー５ｃ&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSSでスタイルを設定</span></h2>



<p>子要素のメニューはマウスホバーで表示させるため、#global_nav ulのスタイルをdisplay:noneに設定しておきます。もしご自身でスタイルを色々変更される場合はdisplay:noneの設定は最後に行ってください。</p>



<pre class="wp-block-code css"><code>/* ナビゲーションのスタイル */
a{
    text-decoration: none;
    color: #666;
}

#global_nav li{
    float: left;
    width: calc(98.5%/5);
    margin: 1% 0.15%;
}
#global_nav li a{
    display: block;
    height: 40px;
    line-height: 40px;
    text-align: center;
    background: #FFF1DA;
}

#global_nav li a:hover{
    color: #fff;
    background: #FCD69E;
}

/* 子要素のみのスタイル */
#global_nav ul{
    display: none;
}

#global_nav ul li{
    float: none;
    width: 100%;
    margin: 1% 0;
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">Jqueryをhtmlへ設定する</span></h2>



<p>Jqueryの設定を行います。<br>&lt;/body&gt;の直前にこのコードを入れます。</p>



<pre class="wp-block-code javascript"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"&gt;&lt;/script&gt;
&lt;script src="js/style.js"&gt;&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">JQueryでイベントを設定する</span></h2>



<p>JQueryでマウスホバー時に表示を切り替える動作を追加します。<br>まず、ul li liにはイベントを起こさないようにchildrenメソッドで#global_navの子要素のみにhoverメソッドを設定します。<br>次に、this(ホバーされている#global_nav li)の子要素 ulに対し、slideToggleメソッドで要素をスライドしながら開閉します。<br>※ stop()メソッドはイベントの重複を防ぐため、イベントを中止するために設定しています。</p>



<pre class="wp-block-code javascript"><code>$(function () {
    // 1.#global_nav liにhoverメソッドを設定
    $("#global_nav").children("li").hover(function(){
        // 2.メニューの開閉
        $(this).children("ul").stop().slideToggle(180);
    });
});</code></pre>



<p>実際にマウスホバーした時にこのように子要素のナビゲーションが表示されたら完成です。簡単にできますので、試してみてください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="292" src="https://nyanblog2222.com/wp-content/uploads/2020/04/dropdown-1-1024x292.jpg" alt="" class="wp-image-42" srcset="https://nyanblog2222.com/wp-content/uploads/2020/04/dropdown-1-1024x292.jpg 1024w, https://nyanblog2222.com/wp-content/uploads/2020/04/dropdown-1-300x86.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2020/04/dropdown-1-768x219.jpg 768w, https://nyanblog2222.com/wp-content/uploads/2020/04/dropdown-1.jpg 1152w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><a class="link" href="https://nyanblog2222.com/demo/dropdown/" target="_blank"><strong>デモページはこちら</strong></a>です。<br>簡単にできるので、最初はコピペでも動きを確認しながら勉強できるので試してみてください！</p>



<p>最後までご覧いただきありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/32/">【JQuery】コピペでできるドロップダウンメニュー【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/32/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
