JavaScriptでブラウザに結果を保存してみよう!(localStorage )

完成イメージ

作成ファイル・保存場所

js-domフォルダに以下のファイルを作成してください。

ファイル名内容
js-dom11.html基本動作練習用HTML/js
js-dom__11.htmlステップアップ練習用HTML/js

JavaScriptは <script> タグ内に直接記述してください(内部JS)

今回のテーマ

JavaScriptでAPIから取得したデータを localStorage に保存し、再利用できるようにします。
「ページをリロードしても結果が残る」「1日1回だけ占える」など、日常的なUXの仕組み。

目的

  • localStorage.setItem() / .getItem() の使い方を理解する
  • APIから取得した結果を保存し、再利用できるようにする
  • データに日付を付けて「今日もう占ったか?」を判定する

チェックポイント

  • APIから取得した結果を localStorage に保存できているか?
  • 保存したデータをページ再読み込み後も読み取れているか?
  • 日付を使って「毎日1回だけ表示」の制御ができているか?

localStorageとは?

ブラウザにデータを保存できるしくみ(キーと値で記録)。保存データはページを閉じても残る(半永久的

// 保存する
localStorage.setItem('key', 'value');

// 取り出す
const value = localStorage.getItem('key');

sessionStorage とは?

localStorage によく似ていますが、「ページを閉じると消える一時的な保存」です。同じタブの間だけ有効で、別のタブやページでは使えません。

// 保存する
sessionStorage.setItem('key', 'value');

// 取り出す
const value = sessionStorage.getItem('key');

JavaScript基礎トレーニング1

おみくじは1日1回にする

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>おみくじ(保存付き)</title>
</head>
<body>
  <h1>おみくじ</h1>
  <button id="btn">今日の運勢を占う</button>
  <p id="result">ここに結果が表示されます</p>

  <script>
    const btn = document.getElementById('btn');
    const result = document.getElementById('result');
    const key = 'fortune';
    const today = new Date().toLocaleDateString();

    // ページ読み込み時にlocalStorageを確認
    const saved = JSON.parse(localStorage.getItem(key));
    if (saved && saved.date === today) {
      result.textContent = `(保存表示)今日の運勢:${saved.result}`;
    }

    btn.addEventListener('click', () => {
      const list = ['大吉', '中吉', '小吉', '吉', '凶'];
      const choice = list[Math.floor(Math.random() * list.length)];
      result.textContent = `今日の運勢:${choice}`;
      localStorage.setItem(key, JSON.stringify({
        date: today,
        result: choice
      }));
    });
  </script>
</body>
</html>

今日の日付を取得する

const today = new Date().toLocaleDateString();

new Date() で現在の日付・時間を取得します。.toLocaleDateString() を使うことで、「2025/7/5」 のような形式の文字列になります。今日のデータかどうかを判定するのに使います。

保存されているデータを読み込む

const saved = JSON.parse(localStorage.getItem(key));

localStorage.getItem(key) で保存された文字列データを取得します。ただし、これは文字列(例:"{\"date\":\"2025/7/5\",\"result\":\"中吉\"}")なので、JSON.parse() でオブジェクトに戻して使いやすくします。

データを保存する(今日の占い結果)

localStorage.setItem(key, JSON.stringify({
  date: today,
  result: choice
}));

setItem() は、データを保存する関数です。保存する内容は JavaScript のオブジェクトですが、そのままでは保存できないので JSON.stringify() を使って文字列に変換します。

データを削除する

localStorage.removeItem(key);

保存されていたデータを削除します。key で指定したデータが localStorage から消えます。テスト用に「もう一度ボタンを押したい」時などに便利です。