課題【練習問題(DOM操作/イベント操作)】ーNo.005
課題内容
- <概要>
- サイズが横200px/縦200pxで、
- 枠線がついたdivタグを3つ用意しましょう。
- それぞれのdivタグの下に、
- ボタンを2つ用意しましょう。
- ボタン1つ目:「リセット」という文字のボタン。
- ボタン2つ目:「XX色に変更」という文字のボタン。
- (XXは、赤、青、緑を順番に)
- 表示としては、divタグと2つのボタンがセットで、
- このセットを3つ用意する形になります。
- セットの順番として、
- セット1つ目:赤色
- セット2つ目:青色
- セット3つ目:黄色
- となります。
- 実際の表示は、以降の出力結果などを、
- 参考にして作ってみましょう。
- ボタンを押した時の動きは、
- 「リセット」を押すと、背景は色がない状態にします。
- 「XX色に変更」を押したときは、
- XXに該当する色に、divタグの背景色を変えましょう。
- 以降の出力結果などの参考のレイアウトに関しては、
- それぞのdivタグをわかりやすくするために、
- XX色のXXに該当する色(赤、青、緑)を、
- divタグの真ん中に表示しています。
出力結果
初期表示として、
このような表示になるように、
HTMLで表示を作りましょう。
ボタンを押した時の表示の変更は、
以下のようになります。
ボタンを押した時
例えば、
赤色に変更するボタンが押されたときは、
このように、
赤色用のdivタグの背景色を「赤色」に変更します。
そして、
この後に「リセット」ボタンが押されると、
このように、
赤色用のdivタグの背景色が、
元の初期表示に戻ります。
実際の動きを確認(サンプルの動き)
サンプルの動きとして、
以下を参考にしてください。
ポイント(色をつけるためには?)
色をつけたり、消したりするには、
どうしたら良いかという点は、
「クリックした」というイベントのときに、
DOM操作として、
- 要素にクラスを追加する
- 要素からクラスを削除する
ということを行うことで、
divタグに対して、
色をつけたり、消したりすることができます。
具体的には、
- 「XX色に変更」ボタンをクリック → 色を付けるクラスを追加
- 「リセット」ボタンをクリック → 色を付けるクラスを削除
という処理を行うことで、
今回の課題の動きを実現することができます。
この要素に対して、
クラスを追加、削除する方法に関しては、
以下を参考にしてください。
答え
HTML
<html>
<head>
<meta charset="UTF-8">
<title>Sample Dom/Event</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<div>
<label class="text-result">色の変更</label>
</div>
<div id="target-red" class="target-div">
<span>赤色</div>
</div>
<div>
<button id="action-red-reset">リセット</button>
<button id="action-red-change">赤色に変更</button>
</div>
<div id="target-blue" class="target-div">
<span>青色</div>
</div>
<div>
<button id="action-blue-reset">リセット</button>
<button id="action-blue-change">青色に変更</button>
</div>
<div id="target-green" class="target-div">
<span>緑色</div>
</div>
<div>
<button id="action-green-reset">リセット</button>
<button id="action-green-change">緑色に変更</button>
</div>
</body>
<script type="text/javascript" src="sample.js"></script>
</html>
CSS
.target-div {
width: 200px;
height: 200px;
border: 1px solid #000;
margin: 10px 0px;
display: flex;
justify-content: center;
align-items: center;
}
.red {
background-color: red;
color: white;
}
.blue {
background-color: blue;
color: white;
}
.green {
background-color: green;
color: white;
}
javaScript
// 赤色のための定義
let sampleRed = document.querySelector('#target-red');
let sampleActionRedReset = document.querySelector('#action-red-reset');
let sampleActionRedChange = document.querySelector('#action-red-change');
// 青色のための定義
let sampleBlue = document.querySelector('#target-blue');
let sampleActionBlueReset = document.querySelector('#action-blue-reset');
let sampleActionBlueChange = document.querySelector('#action-blue-change');
// 緑色のための定義
let sampleGreen = document.querySelector('#target-green');
let sampleActionGreenReset = document.querySelector('#action-green-reset');
let sampleActionGreenChange = document.querySelector('#action-green-change');
// リセット(赤色)
sampleActionRedReset.addEventListener('click',event => {
// クラウを削除
sampleRed.classList.remove('red');
})
// 色変更(赤色)
sampleActionRedChange.addEventListener('click',event => {
// クラウを追加
sampleRed.classList.add('red');
})
// リセット(青色)
sampleActionBlueReset.addEventListener('click',event => {
// クラウを削除
sampleBlue.classList.remove('blue');
})
// 色変更(緑色)
sampleActionBlueChange.addEventListener('click',event => {
// クラウを追加
sampleBlue.classList.add('blue');
})
// リセット(緑色)
sampleActionGreenReset.addEventListener('click',event => {
// クラウを削除
sampleGreen.classList.remove('green');
})
// 色変更(緑色)
sampleActionGreenChange.addEventListener('click',event => {
// クラウを追加
sampleGreen.classList.add('green');
})