課題【DOM操作】ーNo.09

課題内容

  • <準備:HTML>
  •  divタグで「対象の文字列」という文字を設定しましょう。
  •  このdivタグには、idとして、「target-id」をつけましょう。
  •  
  • <準備:CSS>
  •  色をつけるためのクラスを用意しましょう。
  •  文字列を赤色、背景を黄色:クラス「change-red」
  •  文字列を青色、背景を黄色:クラス「change-blue」
  •  文字列を緑色、背景を黄色:クラス「change-green」
  •  
  • <処理:javaScript>
  •  javaScriptでは、
  •  idの「target-id」を指定してDOM操作を行いましょう。
  •  プロンプトから値を取得して、
  •  文字列「赤」ならクラス「change-red」を追加
  •  文字列「青」ならクラス「change-blue」を追加
  •  文字列「緑」ならクラス「change-green」を追加
  •  この「赤」「青」「緑」なら上記の処理を行いましょう。
  •  文字列が上記の3つ以外なら、
  •  divタグの文字列を「対象の文字列」から、
  •  「指定の色はありませんでした。」に変更しましょう。
  •   

出力結果

まず、

このようなプロンプトを表示させましょう。

ここから文字列を取得して、

取得した文字列によって、

コンソールの表示も変わります。

「赤」「青」「緑」のいずれかの場合

「赤」「青」「緑」

のどれかが入力された場合は、

コンソールには、

以下のように表示するようにしましょう。

例として「赤」を入力した場合です。

(「青」「緑」の場合は、「赤」の部分が変わります)

----------------------
プロンプトから値を取得
----------------------
文字列「赤」が入力されました。

----------------------
文字列の色と背景色を変更
----------------------
文字列に「赤」のためのクラスを追加しました。

この表示が行われて、

実際の文字の色と背景色が、

うまくかわっていれば大丈夫です。

「赤」「青」「緑」以外の場合

「赤」「青」「緑」以外が、

プロンプトに入力された場合は、

コンソールには、

以下のように表示しましょう。

例えば、

コンソールから「テスト」が入力されたとき、

以下の表示になります。

----------------------
プロンプトから値を取得
----------------------
文字列「テスト」が入力されました。

----------------------
文字列の色と背景色を変更
----------------------
文字列が「テスト」のため、文字列を変更しました。

このように、

コンソールに表示され、

文字列の色や背景色の変更は行われず、

実際の文字列が、

「指定の色はありませんでした。」

に変更されていれば大丈夫です。

ポイント(DOM操作)

DOMの操作方法に関しては、

  • パターン1:対象のタグを指定する場合
  • パターン2:対象のクラスを指定する場合
  • パターン3:対象のIDを指定する場合

の3パターンがあります。

この3パターンのそれぞれの指定方法は、

以下の記事の一部を参考にしてください。

ポイント(DOM操作でのクラスの追加)

DOMの操作として、

クラス名を追加する方法については、

以下のページを参考にしてください。

ポイント(DOM操作での文字列の置換)

DOMの操作として、

文字列を置換する方法については、

以下のページを参考にしてください。

答え

HTML

<html>
  <head>
    <meta charset="UTF-8">
    <!-- CSSファイル -->
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
  </head>
  <body>
    <!-- DOM操作 -->
    <div id="target-id">対象の文字列</div>
  </body>
  <script type="text/javascript" src="sample.js"></script>
</html>

CSS

/* 「赤」の設定用 */
.change-red {
  color: red;
  background-color: yellow;
}

/* 「青」の設定用 */
.change-blue {
  color: blue;
  background-color: yellow;
}

/* 「緑」の設定用 */
.change-green {
  color: green;
  background-color: yellow;
}

javaScript

// プロンプトから取得
console.log('----------------------');
console.log('プロンプトから値を取得');
console.log('----------------------');
let promptText = prompt('値を入力してください。');
console.log('文字列に「'+promptText+'」が入力されました。');

// コンソールに表示
console.log('----------------------');
console.log('文字列の色と背景色を変更');
console.log('----------------------');
setColorAndBackground(promptText);

function setColorAndBackground(checkString) {
  // DOMを取得する
  let sample = document.querySelector('#target-id');

  if(checkString === '赤') {
    // 取得したDOMにクラスを追加
    sample.classList.add('change-red');

    // コンソールに表示
    console.log('文字列に「'+checkString+'」のためのクラスを追加しました。');
  }
  else if(checkString === '青') {
    // 取得したDOMにクラスを追加
    sample.classList.add('change-blue');

    // コンソールに表示
    console.log('文字列に「'+checkString+'」のためのクラスを追加しました。');
  }
  else if(checkString === '緑') {
    // 取得したDOMにクラスを追加
    sample.classList.add('change-green');

    // コンソールに表示
    console.log('文字列に「'+checkString+'」のためのクラスを追加しました。');
  }
  else {
    // 取得したDOMにクラスを追加
    sample.textContent = '指定の色はありませんでした。';

    // コンソールに表示
    console.log('文字列が「'+checkString+'」のため、文字列を変更しました。');
  }
}