カテゴリー

  • プログラミング
  • 英語学習
  • 海外
  • キャリア
  • Kredo
Kredoオンラインキャンプ
KredoIT留学
無料カウンセリングはこちら
Kredoオンラインキャンプ体験談
KredoIT留学体験談
外貨を稼ぐ!海外フリーランス無料セミナー
未経験から即戦力ITグローバル人材 無料セミナー
Kredo Blog 英語・IT・AIで、人生の選択肢を広げる。
無料ウェビナー参加 ↗ 無料カウンセリング予約無料相談↗
MENU
EXPLORE KREDO BLOG

知りたいことから、世界が広がる。

ブログTOP ↗
留学・セブSTUDY & LIFE
留学・セブの記事をすべて読む ↗ 海外留学→海外移住→海外就職→
英語学習ENGLISH
英語学習の記事をすべて読む ↗ 英語学習法→英語フレーズ→
IT・AITECH & CREATIVITY
IT・AIの記事をすべて読む ↗ プログラミング学習→プログラミング知識→AI・テクノロジー→デザイン→
キャリアYOUR NEXT CHAPTER
キャリアの記事をすべて読む ↗ 転職情報→キャリアデザイン→
KredoOUR SCHOOL
Kredoの記事をすべて読む ↗ ニュース・キャンペーン→セブ島情報→インタビュー→
STUDENT DIARIES留学生のリアルな日記noteの体験記を読む ↗YouTube・Instagramで留学を知る ↗
記事を探す ブログTOP
留学・セブ
STUDY & LIFEセブで学ぶ。海外で暮らす。留学の準備から、現地の毎日まで。
留学・セブを知るすべての記事 ↗
海外留学費用・期間・学校選びを知る↗海外移住海外で暮らすためのヒント↗海外就職世界で働く選択肢を探す↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
英語学習
ENGLISH英語が、世界を近くする。学び方と、今日から使える英語。
英語学習を知るすべての記事 ↗
英語学習法自分に合った学び方を見つける↗英語フレーズ会話で使える表現を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
IT・AI
TECH & CREATIVITYつくる力を、次の一歩に。プログラミングとAIをもっと身近に。
IT・AIを知るすべての記事 ↗
プログラミング学習はじめ方・学び方を知る↗プログラミング知識仕組みやスキルを深める↗AI・テクノロジーAIの活かし方と最新の話題↗デザイン伝わるものづくりのヒント↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
キャリア
YOUR NEXT CHAPTER学びの先の、働き方。転職・海外就職・これからのキャリア。
キャリアを知るすべての記事 ↗
転職情報次の仕事へ向かう準備↗キャリアデザイン自分らしい働き方を考える↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
Kredo
OUR SCHOOLKredoを、もっと知る。学校のこと、セブのこと、学ぶ人のこと。
Kredoを知るすべての記事 ↗
ニュース・キャンペーンKredoからのお知らせ↗セブ島情報現地の暮らしを知る↗インタビュー受講生・卒業生の声を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
留学日記 ↗

ENGLISH · IT · AI / STUDY IN CEBU

学ぶって、冒険だ。

英語・IT・AIで、人生の選択肢を広げよう。

留学の無料相談へ ↗Kredo Blogを読む →
JAPAN✈CEBU
Kredoで、講師と一緒に英語とITを学ぶ受講生
LEARN SOMETHING NEW.
セブの海を望む場所で学ぶ日常
HELLO, NEW WORLD.
  • TOP
  • プログラミング
  • Web・プログラミング(学習)
  • JavaScriptサンプルコード集24選|Webサイトで使える例

JavaScriptサンプルコード集24選|Webサイトで使える例

アバター画像
Kredo編集部
公開日:2023.04.20
更新日:2026.10.07
Web・プログラミング(学習) |
モニターのWebページと手元の構成メモを見ながらマウスを操作する、JavaScript学習の写真風イメージ

JavaScriptのサンプルコードを、ボタン・画像・メニュー・タブ・時計・フォームなど、Webサイトでよく使う機能ごとに24個まとめました。どのコードもHTMLファイルに貼り付けてブラウザで開くだけで動き、2026年9月時点のブラウザ(Chromeと同じエンジンのChromium)で動作を確認しています。まず「サンプルコードの動かし方」で準備をしてから、作りたい機能のコードを試してみてください。

コードは、今のWebサイト制作で使われている書き方(const・addEventListener・textContentなど)で統一しています。

記事のもくじ

  • サンプルコードの動かし方
  • JavaScriptでWebサイトにできること(サンプル一覧)
  • 文字・ボタンのサンプル
    • 1. ボタンを押して文字を変える
    • 2. 文字の色と太さを切り替える
    • 3. 入力した名前を表示する
    • 4. 文字数カウンター
  • 画像のサンプル
    • 5. ボタンで画像を切り替える
    • 6. 画像を拡大・縮小する
    • 7. 画像を回転させる
    • 8. スライドショー(前へ・次へ・自動再生)
  • Webサイトでよく使うUIのサンプル
    • 9. ハンバーガーメニューを開閉する
    • 10. タブを切り替える
    • 11. アコーディオン(よくある質問の開閉)
    • 12. モーダルウィンドウを表示する
    • 13. ページトップへ戻るボタン
    • 14. ダークモードを切り替える(設定を保存)
  • 日付・時間のサンプル
    • 15. 今日の日付と曜日を表示する
    • 16. リアルタイムの時計
    • 17. イベントまでの残り日数(カウントダウン)
  • フォームのサンプル
    • 18. フォームの入力チェック
    • 19. パスワードの表示・非表示を切り替える
  • ページ移動・リンクのサンプル
    • 20. 前のページに戻るボタン
    • 21. ページを再読み込みするボタン
    • 22. リンクを新しいタブで開く
  • 作品例:組み合わせて作るミニアプリ
    • 23. おみくじ
    • 24. ToDoリスト(追加・完了・削除)
  • 古いサンプルコードを見るときの注意点
  • サンプルコードを自分のスキルにする練習方法
  • 英語でプログラミングを学ぶという選択肢
  • JavaScriptのサンプルコードについてよくある質問
    • サンプルコードをコピペしても動きません。
    • JavaScriptを別のファイルに分けるには?
    • JavaScriptとJavaは同じものですか?
    • JavaScriptで作れる作品の例は?
    • jQueryを使ったサンプルとの違いは?
  • まとめ:サンプルを動かし、変えて、自分のコードにしよう

サンプルコードの動かし方

JavaScriptは、ソフトをインストールしなくてもブラウザだけで動かせます。次の手順で試してみましょう。

HTMLは部品、CSSは見た目、JavaScriptは動きを担当し、sample.htmlに記述してブラウザで開く関係を示す水彩図
HTMLは部品、CSSは見た目、JavaScriptは動き。このページのテンプレートでは3つをsample.htmlに記述します。役割を示す概念図で、実際の画面を再現したものではありません。 図を押すと拡大できます。
  1. テキストエディタ(Visual Studio Codeなど)で新しいファイルを作り、「sample.html」のように拡張子を.htmlにして保存する
  2. 下のテンプレートを貼り付け、使いたいサンプルのHTML・CSS・JavaScriptをそれぞれの場所に貼る
  3. 保存したファイルをブラウザで開く
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>JavaScriptサンプル</title>
  <style>
    /* CSSがあるサンプルは、ここに貼り付ける */
  </style>
</head>
<body>
  <!-- ここにサンプルのHTMLを貼り付ける -->

  <script>
    // ここにサンプルのJavaScriptを貼り付ける
  </script>
</body>
</html>
  1. サンプルは1つずつ別のファイルで試してください。同じファイルに複数貼ると、同じ変数名がぶつかってエラーになることがあります
  2. <script>を<body>の最後に置くのは、HTMLの要素が読み込まれた後にJavaScriptを実行するためです
  3. 動かないときは、Chromeで開発者ツールのConsole(Windowsは「Ctrl+Shift+J」、Macは「Command+Option+J」)を開くと、エラーの内容と行番号が表示されます

JavaScriptを動かす方法をもう少し詳しく知りたい方は「JavaScriptのインストールは不要?動かすために知るべきたった1つのこと」も参考にしてください。

JavaScriptでWebサイトにできること(サンプル一覧)

このページで紹介するサンプルを、用途別にまとめました。作りたい機能から探してください。

用途 サンプル 主に使う書き方
文字・ボタン 1. 文字を変える/2. 色と太さを切り替える/3. 入力した名前を表示/4. 文字数カウンター textContent、classList、value
画像 5. 画像の切り替え/6. 拡大・縮小/7. 回転/8. スライドショー src、style、setInterval
サイトのUI 9. ハンバーガーメニュー/10. タブ/11. アコーディオン/12. モーダル/13. ページトップへ戻る/14. ダークモード classList、hidden、dialog、scrollTo、localStorage
日付・時間 15. 今日の日付/16. 時計/17. カウントダウン Date、setInterval
フォーム 18. 入力チェック/19. パスワード表示切り替え submitイベント、validity
ページ移動 20. 前のページに戻る/21. 再読み込み/22. 新しいタブで開く history、location、window.open
作品例 23. おみくじ/24. ToDoリスト Math.random、createElement

文字・ボタンのサンプル

まずは、ボタンを押したら文字や見た目が変わる基本のサンプルです。ほかのサンプルもすべて「要素を取得する→イベント(クリックなど)を登録する→中身や見た目を変える」という同じ流れでできています。

1. ボタンを押して文字を変える

ボタンをクリックすると、段落の文字が変わります。getElementByIdで要素を取得し、addEventListenerでクリックしたときの処理を登録します。

HTML

<p id="message">ボタンを押してください</p>
<button type="button" id="changeBtn">文字を変える</button>

JavaScript

const message = document.getElementById('message');
const changeBtn = document.getElementById('changeBtn');

changeBtn.addEventListener('click', () => {
  message.textContent = 'こんにちは、JavaScript!';
});

2. 文字の色と太さを切り替える

ボタンを押すたびに、文字の色と太さが切り替わります。見た目はCSSのclassにまとめておき、JavaScriptではclassList.toggleでclassを付けたり外したりします。

CSS

.highlight {
  color: #d93025;
  font-weight: bold;
}

HTML

<p id="text">この文字の見た目が変わります</p>
<button type="button" id="styleBtn">色と太さを切り替える</button>

JavaScript

const text = document.getElementById('text');

document.getElementById('styleBtn').addEventListener('click', () => {
  text.classList.toggle('highlight');
});

JavaScriptで直接指定する場合はtext.style.color = 'purple';、text.style.fontWeight = 'bold';のように書きます。CSSのfont-weightは、JavaScriptではfontWeight(ハイフンを消して次の文字を大文字)になる点に注意しましょう。

3. 入力した名前を表示する

テキストボックスに入力した名前を使って、あいさつ文を表示します。入力値はvalueで取り出せます。

HTML

<input type="text" id="nameInput" placeholder="名前を入力">
<button type="button" id="greetBtn">あいさつする</button>
<p id="greeting"></p>

JavaScript

const nameInput = document.getElementById('nameInput');
const greeting = document.getElementById('greeting');

document.getElementById('greetBtn').addEventListener('click', () => {
  const name = nameInput.value.trim();
  greeting.textContent = name ? `${name}さん、こんにちは!` : '名前を入力してください';
});

入力された文字を表示するときは、innerHTMLではなくtextContentを使います。innerHTMLに入力値をそのまま入れると、HTMLやスクリプトとして解釈されてしまい、セキュリティ上の問題(クロスサイトスクリプティング)につながるためです。

4. 文字数カウンター

テキストエリアに入力するたびに、文字数を表示します。inputイベントは、入力内容が変わるたびに実行されます。

HTML

<textarea id="comment" rows="4" maxlength="140"></textarea>
<p><span id="count">0</span> / 140文字</p>

JavaScript

const comment = document.getElementById('comment');
const count = document.getElementById('count');

comment.addEventListener('input', () => {
  count.textContent = comment.value.length;
});

lengthは、絵文字など一部の文字を2文字として数えます。SNSの投稿画面のような厳密な文字数が必要な場合は、数え方を調整しましょう。

画像のサンプル

画像の切り替え・拡大・回転・スライドショーのサンプルです。images/cat.jpgなどの画像パスは、手元にある画像のファイル名に書き換えてください。

5. ボタンで画像を切り替える

ボタンを押すたびに画像が切り替わります。src(画像のパス)と一緒にalt(画像の説明)も書き換えるのがポイントです。

HTML

<img id="photo" src="images/cat.jpg" alt="猫の写真" width="300">
<button type="button" id="swapBtn">画像を切り替える</button>

JavaScript

const photo = document.getElementById('photo');
const images = [
  { src: 'images/cat.jpg', alt: '猫の写真' },
  { src: 'images/dog.jpg', alt: '犬の写真' },
];
let current = 0;

document.getElementById('swapBtn').addEventListener('click', () => {
  current = (current + 1) % images.length;
  photo.src = images[current].src;
  photo.alt = images[current].alt;
});

%は割り算の余りを求める記号です。最後の画像の次は0番目に戻るので、画像を何枚に増やしても同じコードで順番に切り替わります。

6. 画像を拡大・縮小する

「拡大」「縮小」ボタンで、画像の幅を50pxずつ変えます。Math.minとMath.maxで、大きさを100〜600pxの範囲に収めています。

HTML

<img id="zoomImg" src="images/cat.jpg" alt="猫の写真" width="300">
<button type="button" id="zoomInBtn">拡大</button>
<button type="button" id="zoomOutBtn">縮小</button>

JavaScript

const zoomImg = document.getElementById('zoomImg');
let width = 300;

document.getElementById('zoomInBtn').addEventListener('click', () => {
  width = Math.min(width + 50, 600);
  zoomImg.style.width = `${width}px`;
});

document.getElementById('zoomOutBtn').addEventListener('click', () => {
  width = Math.max(width - 50, 100);
  zoomImg.style.width = `${width}px`;
});

7. 画像を回転させる

ボタンを押すたびに、画像が90度ずつ回転します。CSSのtransitionを付けると、回転がなめらかになります。

CSS

#rotateImg {
  transition: transform 0.3s;
}

HTML

<img id="rotateImg" src="images/cat.jpg" alt="猫の写真" width="200">
<button type="button" id="rotateBtn">90度回転</button>

JavaScript

const rotateImg = document.getElementById('rotateImg');
let angle = 0;

document.getElementById('rotateBtn').addEventListener('click', () => {
  angle += 90;
  rotateImg.style.transform = `rotate(${angle}deg)`;
});

8. スライドショー(前へ・次へ・自動再生)

「前へ」「次へ」ボタンと、3秒ごとの自動再生があるスライドショーです。表示する画像の番号を1つの関数showSlideで管理しています。

HTML

<img id="slide" src="images/slide1.jpg" alt="スライド1" width="400">
<div>
  <button type="button" id="prevBtn">前へ</button>
  <button type="button" id="nextBtn">次へ</button>
</div>

JavaScript

const slides = ['images/slide1.jpg', 'images/slide2.jpg', 'images/slide3.jpg'];
const slide = document.getElementById('slide');
let index = 0;

function showSlide(n) {
  index = (n + slides.length) % slides.length;
  slide.src = slides[index];
  slide.alt = `スライド${index + 1}`;
}

document.getElementById('prevBtn').addEventListener('click', () => showSlide(index - 1));
document.getElementById('nextBtn').addEventListener('click', () => showSlide(index + 1));

// 3秒(3000ミリ秒)ごとに次のスライドへ
setInterval(() => showSlide(index + 1), 3000);

Webサイトでよく使うUIのサンプル

メニューは一覧を開閉し、タブは表示を切り替え、FAQは答えを開閉する違いを比べた水彩の概念図
メニューは一覧の開閉、タブは内容の切り替え、FAQは答えの開閉に使います。本文のサンプル9〜11で、それぞれ何が変わるかを確かめましょう。図は機能の違いを示す概念図です。 図を押すと拡大できます。

ハンバーガーメニューやタブ、モーダルなど、Webサイト制作でよく使う部品のサンプルです。見た目はCSSのclassで決め、JavaScriptではclassの付け外しだけを行う形にすると、コードが短くわかりやすくなります。

9. ハンバーガーメニューを開閉する

「メニュー」ボタンでナビゲーションを開いたり閉じたりします。aria-expandedは、読み上げソフトなどにメニューが開いているかを伝えるための属性です。

CSS

.nav {
  display: none;
}
.nav.is-open {
  display: block;
}

HTML

<button type="button" id="menuBtn" aria-expanded="false" aria-controls="globalNav">メニュー</button>
<nav id="globalNav" class="nav">
  <ul>
    <li><a href="#about">私たちについて</a></li>
    <li><a href="#service">サービス</a></li>
    <li><a href="#contact">お問い合わせ</a></li>
  </ul>
</nav>

JavaScript

const menuBtn = document.getElementById('menuBtn');
const globalNav = document.getElementById('globalNav');

menuBtn.addEventListener('click', () => {
  const isOpen = globalNav.classList.toggle('is-open');
  menuBtn.setAttribute('aria-expanded', isOpen);
});

10. タブを切り替える

タブをクリックすると、対応する内容だけが表示されます。どのタブがどの内容に対応するかは、HTMLのdata-target属性で指定しています。

CSS

.panel {
  display: none;
}
.panel.is-active {
  display: block;
}
.tab.is-active {
  font-weight: bold;
  border-bottom: 2px solid #1a73e8;
}

HTML

<div>
  <button type="button" class="tab is-active" data-target="panel1">概要</button>
  <button type="button" class="tab" data-target="panel2">料金</button>
  <button type="button" class="tab" data-target="panel3">よくある質問</button>
</div>
<div id="panel1" class="panel is-active">概要の内容</div>
<div id="panel2" class="panel">料金の内容</div>
<div id="panel3" class="panel">よくある質問の内容</div>

JavaScript

const tabs = document.querySelectorAll('.tab');
const panels = document.querySelectorAll('.panel');

tabs.forEach((tab) => {
  tab.addEventListener('click', () => {
    tabs.forEach((t) => t.classList.remove('is-active'));
    panels.forEach((p) => p.classList.remove('is-active'));
    tab.classList.add('is-active');
    document.getElementById(tab.dataset.target).classList.add('is-active');
  });
});

11. アコーディオン(よくある質問の開閉)

質問をクリックすると答えが開き、もう一度クリックすると閉じます。hidden属性で答えの表示・非表示を切り替えています。

HTML

<div class="faq">
  <button type="button" class="faq-q" aria-expanded="false">JavaScriptは無料で使えますか?</button>
  <div class="faq-a" hidden>はい。ブラウザに最初から入っているので、追加の費用なしで使えます。</div>
</div>
<div class="faq">
  <button type="button" class="faq-q" aria-expanded="false">何から勉強すればいいですか?</button>
  <div class="faq-a" hidden>HTMLとCSSの基本を学んでから、このページのサンプルを動かしてみるのがおすすめです。</div>
</div>

JavaScript

document.querySelectorAll('.faq-q').forEach((question) => {
  question.addEventListener('click', () => {
    const answer = question.nextElementSibling;
    const isOpen = question.getAttribute('aria-expanded') === 'true';
    question.setAttribute('aria-expanded', !isOpen);
    answer.hidden = isOpen;
  });
});

単純な開閉だけなら、HTMLの<details>と<summary>を使うとJavaScriptなしでも作れます。

12. モーダルウィンドウを表示する

ボタンを押すと、画面の手前に小さなウィンドウ(モーダル)を表示します。HTMLの<dialog>要素を使うと、showModal()で開き、close()で閉じるだけで作れます。Escキーでも閉じられます。

HTML

<button type="button" id="openModal">詳細を見る</button>
<dialog id="modal">
  <p>ここにモーダルの内容が入ります。</p>
  <button type="button" id="closeModal">閉じる</button>
</dialog>

JavaScript

const modal = document.getElementById('modal');

document.getElementById('openModal').addEventListener('click', () => {
  modal.showModal();
});

document.getElementById('closeModal').addEventListener('click', () => {
  modal.close();
});

確認だけならalert('ボタンが押されました');や、OK/キャンセルを選べるconfirm()も使えますが、見た目を自由に変えられるのは<dialog>です。

13. ページトップへ戻るボタン

300px以上スクロールすると右下にボタンが表示され、クリックするとページの先頭までなめらかに戻ります。

CSS

.to-top {
  position: fixed;
  right: 16px;
  bottom: 16px;
}

HTML

<button type="button" id="toTop" class="to-top" hidden>↑ トップへ</button>

JavaScript

const toTop = document.getElementById('toTop');

window.addEventListener('scroll', () => {
  toTop.hidden = window.scrollY < 300;
});

toTop.addEventListener('click', () => {
  window.scrollTo({ top: 0, behavior: 'smooth' });
});

動きを確認するときは、スクロールできるくらい長いページに貼り付けてください。

14. ダークモードを切り替える(設定を保存)

ボタンでダークモードとライトモードを切り替えます。localStorageに設定を保存しているので、ページを開き直しても前回の設定が残ります。

CSS

body.dark {
  background-color: #121212;
  color: #f1f1f1;
}

HTML

<button type="button" id="themeBtn">ダークモードにする</button>

JavaScript

const themeBtn = document.getElementById('themeBtn');

function applyTheme(isDark) {
  document.body.classList.toggle('dark', isDark);
  themeBtn.textContent = isDark ? 'ライトモードにする' : 'ダークモードにする';
}

// 前回選んだ設定を読み込む
applyTheme(localStorage.getItem('theme') === 'dark');

themeBtn.addEventListener('click', () => {
  const isDark = !document.body.classList.contains('dark');
  applyTheme(isDark);
  localStorage.setItem('theme', isDark ? 'dark' : 'light');
});

日付・時間のサンプル

日付や時刻はDateを使って取得します。月は0から数える(1月が0、12月が11)点に注意しましょう。

15. 今日の日付と曜日を表示する

実行環境のローカル日付と曜日を「2026年9月28日(月)」の形で表示します。利用者の地域が異なると、同じ瞬間でも表示される日付が異なる場合があります。

HTML

<p>今日は<span id="today"></span>です。</p>

JavaScript

const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1; // 月は0から始まるので1を足す
const date = now.getDate();
const days = ['日', '月', '火', '水', '木', '金', '土'];
const day = days[now.getDay()];

document.getElementById('today').textContent = `${year}年${month}月${date}日(${day})`;

16. リアルタイムの時計

1秒ごとに現在時刻を更新して「09:05:03」の形で表示します。padStartで、1桁の数字の前に0を付けて2桁にしています。

HTML

<p id="clock"></p>

JavaScript

const clock = document.getElementById('clock');

function updateClock() {
  const now = new Date();
  const h = String(now.getHours()).padStart(2, '0');
  const m = String(now.getMinutes()).padStart(2, '0');
  const s = String(now.getSeconds()).padStart(2, '0');
  clock.textContent = `${h}:${m}:${s}`;
}

updateClock();
setInterval(updateClock, 1000);

17. イベントまでの残り日数(カウントダウン)

指定した日まであと何日かを表示します。日付どうしを引き算するとミリ秒の差が出るので、1日のミリ秒(1000×60×60×24)で割って日数にします。

HTML

<p>イベントまであと<span id="daysLeft"></span>日</p>

JavaScript

const eventDate = new Date(2026, 11, 24); // 2026年12月24日(12月は11)
const today = new Date();
today.setHours(0, 0, 0, 0); // 今日の0時にそろえる

const daysLeft = Math.round((eventDate - today) / (1000 * 60 * 60 * 24));

document.getElementById('daysLeft').textContent = Math.max(daysLeft, 0);

イベントの日付はnew Date(年, 月-1, 日)の形で書き換えてください。当日と過ぎた日は0日と表示されます。

このカウントダウンは、実行環境のローカル日付を基準にした簡易例です。夏時間がある地域では1日の経過時間が24時間とは限らず、日本時間を固定の基準にする仕様にもそのままは対応していません。入力日が前日になる、UTCへ変換すると日付が変わる場合は、JavaScriptの日付ずれとタイムゾーンの実例で、日付だけの値と日時の扱いを確認してください。

フォームのサンプル

お問い合わせフォームなどで使う、入力チェックとパスワード表示のサンプルです。

18. フォームの入力チェック

送信ボタンを押したときに、メールアドレスが空でないか、形式が正しいかをチェックしてメッセージを表示します。type="email"の入力欄は、ブラウザが形式(「@」があるかなど)を判定し、その結果をvalidity.validで受け取れます。

CSS

.form-message {
  color: #d93025;
}

HTML

<form id="contactForm" novalidate>
  <label for="email">メールアドレス</label>
  <input type="email" id="email">
  <button type="submit">送信</button>
  <p id="formMessage" class="form-message"></p>
</form>

JavaScript

const contactForm = document.getElementById('contactForm');
const email = document.getElementById('email');
const formMessage = document.getElementById('formMessage');

contactForm.addEventListener('submit', (event) => {
  event.preventDefault(); // サンプルなので実際には送信しない

  if (email.value.trim() === '') {
    formMessage.textContent = 'メールアドレスを入力してください';
  } else if (!email.validity.valid) {
    formMessage.textContent = 'メールアドレスの形式が正しくありません';
  } else {
    formMessage.textContent = '入力OKです(サンプルのため送信はしません)';
  }
});

ブラウザ側のチェックは、入力ミスを防ぐためのものです。実際にデータを受け取るサーバー側でも、同じようにチェックする必要があります。

19. パスワードの表示・非表示を切り替える

ボタンを押すと、パスワード欄の文字を表示したり隠したりできます。入力欄のtypeをpasswordとtextで切り替えています。

HTML

<input type="password" id="password">
<button type="button" id="toggleBtn">表示する</button>

JavaScript

const password = document.getElementById('password');
const toggleBtn = document.getElementById('toggleBtn');

toggleBtn.addEventListener('click', () => {
  const isHidden = password.type === 'password';
  password.type = isHidden ? 'text' : 'password';
  toggleBtn.textContent = isHidden ? '隠す' : '表示する';
});

ページ移動・リンクのサンプル

前のページに戻る、再読み込みする、新しいタブで開くといった、ページ全体に関わる操作のサンプルです。

20. 前のページに戻るボタン

history.back()で、ブラウザの「戻る」と同じ動きをします。1つ先のページに進むときはhistory.forward()を使います。

HTML

<button type="button" id="backBtn">前のページに戻る</button>

JavaScript

document.getElementById('backBtn').addEventListener('click', () => {
  history.back();
});

ほかのページから移動してきたときに動きます。ページを直接開いた場合は、戻る先がないので何も起きません。

21. ページを再読み込みするボタン

location.reload()で、今のページを読み込み直します。

HTML

<button type="button" id="reloadBtn">ページを更新する</button>

JavaScript

document.getElementById('reloadBtn').addEventListener('click', () => {
  location.reload();
});

22. リンクを新しいタブで開く

リンクを新しいタブで開くだけなら、JavaScriptは不要です。HTMLのtarget="_blank"を使います。JavaScriptで開く場合はwindow.openを使います。

HTML

<!-- HTMLだけで新しいタブを開く -->
<a href="https://kredo.jp/media/" target="_blank" rel="noopener noreferrer">KredoBlogを新しいタブで開く</a>

<!-- JavaScriptで開く -->
<button type="button" id="openTabBtn">新しいタブで開く</button>

JavaScript

document.getElementById('openTabBtn').addEventListener('click', () => {
  window.open('https://kredo.jp/media/', '_blank', 'noopener');
});

noopenerは、開いた先のページから元のページを操作されないようにするための指定です。なお、window.openはクリックなどの操作から呼び出さないと、ブラウザにポップアップとしてブロックされることがあります。

作品例:組み合わせて作るミニアプリ

ここまでの書き方を組み合わせると、小さなアプリも作れます。学習の成果として作品にしやすい2つの例です。

23. おみくじ

ボタンを押すと、ランダムにおみくじの結果を表示します。Math.random()で0以上1未満の数をつくり、配列の番号に変換しています。

HTML

<button type="button" id="omikujiBtn">おみくじを引く</button>
<p id="omikujiResult"></p>

JavaScript

const results = ['大吉', '中吉', '小吉', '吉', '末吉', '凶'];

document.getElementById('omikujiBtn').addEventListener('click', () => {
  const index = Math.floor(Math.random() * results.length);
  document.getElementById('omikujiResult').textContent = `結果は「${results[index]}」です`;
});

24. ToDoリスト(追加・完了・削除)

やることを入力して追加し、文字をクリックすると完了(取り消し線)、「削除」ボタンで消せるToDoリストです。createElementで新しい要素を作ってリストに追加しています。

CSS

.done {
  text-decoration: line-through;
  color: #888;
}

HTML

<form id="todoForm">
  <input type="text" id="todoInput" placeholder="やることを入力" required>
  <button type="submit">追加</button>
</form>
<ul id="todoList"></ul>

JavaScript

const todoForm = document.getElementById('todoForm');
const todoInput = document.getElementById('todoInput');
const todoList = document.getElementById('todoList');

todoForm.addEventListener('submit', (event) => {
  event.preventDefault();
  const text = todoInput.value.trim();
  if (!text) return;

  const li = document.createElement('li');

  const label = document.createElement('span');
  label.textContent = text;
  label.addEventListener('click', () => li.classList.toggle('done'));

  const deleteBtn = document.createElement('button');
  deleteBtn.type = 'button';
  deleteBtn.textContent = '削除';
  deleteBtn.addEventListener('click', () => li.remove());

  li.append(label, ' ', deleteBtn);
  todoList.append(li);
  todoInput.value = '';
});

サンプル14のlocalStorageと組み合わせれば、ページを閉じてもリストが残るように改造できます。自分で機能を足していくと、ポートフォリオに載せられる作品になります。

新規CTA

フォーム・配列・画面更新を組み合わせた作品に進むなら、保存と編集ができる学習記録アプリの制作課題を試してみてください。完成コードを動かし、30分を45分へ編集して再読み込み後も残るか、IDとlocalStorageの仕組みを追って学べます。

古いサンプルコードを見るときの注意点

ネット上のJavaScriptのサンプルには、今はおすすめされない書き方のものも残っています。次のような書き方を見かけたら、右の列の書き方に置き換えて考えましょう。

古い書き方 問題点 今の書き方
document.write() MDNで使用が強く非推奨とされている。ページの内容が消えるなど予想外の動きをすることがある textContent、createElementとappend
<script language="JavaScript"> language属性はHTMLの仕様で廃止された書き方 <script>だけでよい
HTMLにonclick="関数名()"を書く HTMLとJavaScriptが混ざり、管理しにくい addEventListener('click', ...)
navigator.appVersionやnavigator.platformでブラウザ・OSを判別 MDNで「信頼できず、推奨されない」とされている 必要な機能が使えるかを直接調べる(機能検出)
varで変数を作る 同じ名前で作り直せてしまい、ミスに気づきにくい 変えない値はconst、変える値はlet
全角の引用符(” ’)が混ざったコード JavaScriptでは文字列の記号として認識されず、エラーになる 半角の'か"で囲む

サンプルコードを自分のスキルにする練習方法

サンプルは、貼り付けて動かすだけでは身につきにくいものです。次の順番で手を動かすと、自分で書ける力につながります。

  1. 数字や文字を変えてみる:スライドショーの秒数、おみくじの結果、ボタンの文言などを変えて、どこが何に対応しているかを確かめる
  2. 機能を足してみる:ToDoリストに件数表示を足す、ダークモードの設定をToDoリストにも使う、など
  3. 何も見ずに書き直す:一度閉じて、同じ動きを自分で書いてみる。つまずいた部分が、理解できていない部分です
  4. エラーメッセージを読む:Consoleに出る「Uncaught TypeError: Cannot read properties of null」などは英語です。意味を調べる習慣をつけると、自分で直せるようになります

練習用の学習サイトを探している方は「JavaScriptの学習・練習ができるサイトまとめ」も参考にしてください。

入力欄や保存機能を組み合わせたら、正常な値だけでなく、空欄・0・上限を超える値も試してみてください。学習時間メモで練習するアプリのテスト方法では、12ケースの確認結果と修正前後の教材を公開しています。

英語でプログラミングを学ぶという選択肢

このページのコードに出てくるaddEventListener(イベントの聞き手を追加する)、textContent(文字の中身)、classList.toggle(classを切り替える)は、どれも英語の意味がそのまま名前になっています。エラーメッセージや公式ドキュメントも英語が中心なので、英語がわかるとコードの意味もエラーの原因もつかみやすくなります。

Kredo IT留学は、フィリピン・セブ島でITレッスンをすべて英語で受ける留学です。1日8時間(英語のマンツーマンレッスン4時間+ITのグループレッスン4時間)で、英語とITを同時に学びます。公式サイトによると、受講生の92%が英語もITも未経験です(2026年9月時点の掲載)。

サンプルを動かしてみて「もっと本格的に作れるようになりたい」と思ったら、まずは無料カウンセリングで、自分に合う期間やコースを相談してみてください。

Kredo IT留学の無料カウンセリングを予約する

IT留学について詳しく知りたい方は「IT留学とは?AI時代の費用・おすすめ国・選び方」をご覧ください。

あわせて読みたい記事

AIでWebサイトは初心者でも作れる?公開までの手順と1週間の目安
AIでWebサイトは初心者でも作れる?公開までの手順と1週間の目安
2026-10-04

JavaScriptの勉強方法|独学で何から始める?順番・期間と挫折しないコツ
JavaScriptの勉強方法|独学で何から始める?順番・期間と挫折しないコツ
2023-04-20

JavaScriptゲーム作成の初心者入門|動くサンプルコードで作る手順
JavaScriptゲーム作成の初心者入門|動くサンプルコードで作る手順
2023-04-20

JavaScriptのサンプルコードについてよくある質問

サンプルコードをコピペしても動きません。

よくある原因は、(1)<script>が要素より前にあり、要素がまだ読み込まれていない、(2)HTMLのidとJavaScriptのgetElementByIdの名前が違う、(3)全角の記号やスペースが混ざっている、の3つです。開発者ツールのConsoleに出るエラーの行番号を確認しましょう。

JavaScriptを別のファイルに分けるには?

JavaScriptを「script.js」などのファイルに保存し、HTMLの<head>内に<script src="script.js" defer></script>と書きます。deferを付けると、HTMLを読み込み終わってから実行されます。

JavaScriptとJavaは同じものですか?

いいえ、名前は似ていますが別のプログラミング言語です。JavaScriptは主にブラウザで動き、Webページに動きを付けるために使われます。

JavaScriptで作れる作品の例は?

このページのおみくじやToDoリストのほか、時計、クイズ、タイマー、簡単なゲームなどがよく作られます。まずは小さな作品を完成させ、機能を少しずつ足していくのがおすすめです。

jQueryを使ったサンプルとの違いは?

このページのサンプルは、ライブラリを使わない素のJavaScript(Vanilla JavaScriptとも呼ばれます)で書いています。今のブラウザでは、querySelectorやclassListなど、jQueryでよく使われていた機能の多くを素のJavaScriptで書けます。

写真風表紙と水彩図は、説明用にAI生成したイメージです。実在の受講生・授業や、コードの実行画面を示すものではありません。

まとめ:サンプルを動かし、変えて、自分のコードにしよう

JavaScriptのサンプルコードは、「要素を取得する→イベントを登録する→中身や見た目を変える」という同じ流れでできています。まずは気になるサンプルを1つ動かし、数字や文言を変えて、どこが何に対応しているのかを確かめてみてください。いくつかを組み合わせれば、自分だけの作品も作れます。

英語でIT・AIを学べるKredo

英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

\ セブ島でIT×英語を学ぶ /IT留学の無料カウンセリングを予約する
\ オンラインでIT✕英語を学ぶ / Kredoオンラインキャンプの詳細をみる >>
  • ツイート
  • シェア
  • はてな
  • ポケット
この記事を書いた人
アバター画像
Kredo編集部

Kredo編集部です!プログラミング、英語学習、キャリア、Kredo情報を発信していきます。

関連記事

  • sort()は元のリストを並べ替えて戻り値がNone、sorted()は元のデータを残して新しいリストを返す比較図
    Web・プログラミング(学習)

    Pythonのsortとsortedの違い|英語の公式仕様で元データ・戻り値を確認

    2026.10.08
  • 机の上で色分けした注文カードと明細カードを並べ、結合後のカードを見比べる学習イメージ
    Web・プログラミング(学習)

    SQLのJOINで行数・合計が増える原因は?1対多と直し方を図解

  • 追加した項目の動きをノートで整理する学習者の写真イメージ
    プログラミング Web・プログラミング(学習)

    JavaScriptのイベント委譲とは?追加したボタンが動く仕組みを実験

    2026.10.06
  • フォームの入力条件をノートで整理する学習者の写真イメージ
    プログラミング Web・プログラミング(学習)

    フォームの入力チェックの作り方|HTMLとJavaScriptで空白・文字数を確認

新規CTA
KREDO JAPAN株式会社

\ SNSで留学の様子を更新中! /

  • Instagram
  • LINE
  • X
  • YouTube
©KREDO JAPAN Inc. 2024 All rights reserved.
Kredoのサービス
セブ島で学びたい方はこちら KredoIT留学
自宅で学びたい方はこちら Kredo Online 英語×アプリ開発コース
運営会社 会社概要 採用情報 お問い合わせ
利用規約 プライバシーポリシー 特定商品取引に基づく表示 資料請求