課題【練習問題(DOM操作/イベント操作)】ーNo.003
課題内容
- <概要>
- 文字を表示するタグを準備しましょう。
- 初期表示として、初期値(0)を、
- 「値:0」
- と表示しましょう。
- これとは別に、3つのボタンを用意しましょう。
- 1つ目:「リセット」という文字のボタン。
- 2つ目:「1を減算」という文字のボタン。
- 3つ目:「1を加算」という文字のボタン。
- この3つのボタンを用意して、
- それぞれのボタンが押された時に、
- labelの文字を書き換えてみましょう。
- ボタンが押された時の変更は、
- 1つ目が押された:値をを「0」に変更
- 2つ目が押された:現在の値から「1を減らす」
- 3つ目が押された:現在の値から「1を増やす」
- という変更をしてみましょう。
- また、それぞれのボタンで文字を変更した時に、
- コンソールにも、
- 「最新の値をXXに変更しました」
- (XXは最新の値を表示)
- という表示を行いましょう。
出力結果
初期表示として、
このような表示になるように、
HTMLで表示を作りましょう。
ボタンを押した時の表示の変更は、
以下のようになります。
ボタンを押した時
このボタンが押された時は、
例えば、
最初に「1を減算」が押された時は、
このように、
値が、「0」から「1を減らす」という計算が行われ、
結果として「-1」が表示されます。
「1を減算」と「1を加算」は、
1を引く、1を足すということを、
クリックのたびに繰り返します。
また、
ボタンの「リセット」が押されたときは、
このように、
値を「0」に戻して、
表示が上記のようになります。
実際の動きを確認(サンプルの動き)
サンプルの動きとして、
以下を参考にしてください。
ポイント(数字を文字として表示)
DOM操作で、
文字列として、結果に数値を入れたい時は、
「数値」を「文字列」に変換して、
他の文字列と連結したり、表示する必要があります。
この数字を文字列として表示するときは、
toString()
を使用します。
使い方としては、
let sample = 7;
let sampleDom = document.querySelector('.sample-dom');
sampleDom.textContent = sample.toString();
ポイント(文字列の置換)
文字列を取得したり、置換するには、
DOM操作の中でも、
「textContent」
を使うことで、文字列を操作することができます。
この「textContent」に関しては、以下を参考にしてください。
答え
HTML
<html>
<head>
<meta charset="UTF-8">
<title>Sample Dom/Event</title>
</head>
<body>
<div>
<label class="text-result">値:0</label>
</div>
<div>
<button id="change-text1">リセット</button>
<button id="change-text2">1を減算</button>
<button id="change-text3">1を加算</button>
</div>
</body>
<script type="text/javascript" src="sample.js"></script>
</html>
javaScript
let sampleResult = document.querySelector('.text-result');
let sampleButton1 = document.querySelector('#change-text1');
let sampleButton2 = document.querySelector('#change-text2');
let sampleButton3 = document.querySelector('#change-text3');
const baseText = '値;';
let resultValue = 0;
sampleButton1.addEventListener('click',event => {
// 値を初期化(0に戻す)
resultValue = 0;
changeResultText();
})
sampleButton2.addEventListener('click',event => {
calculationValue(-1);
changeResultText();
})
sampleButton3.addEventListener('click',event => {
calculationValue(1);
changeResultText();
})
function calculationValue(setValue) {
// 値を計算
resultValue = resultValue + setValue;
}
function changeResultText() {
// 表示を更新
sampleResult.textContent = baseText + resultValue.toString();
// コンソールに表示
console.log('最新の値を'+resultValue+'に変更しました');
}