はじめに
DOMとは
DOMとは(Document Ofject Model)を省略した呼び名で、HTMLのタグなどにアクセスして、CSSを追加したり、タグを追加したり文書を表現・操作する事のできるAPIです。
ブラウザは、 HTML を読み込むと実は内部的に Document Object Model もしくは DOM と呼ばれるこういったデータ構造が作られて、その内容に応じてページが描画がされる、という仕組みになっています。この DOM を JavaScript で操作することで様々な機能を作ることができます。JavaScript が操作しているのは、あくまで DOM であって HTML のほうではない点に注意しましょう。
演習1
DOM操作をして、ボタンをクリックしたらできすとエリアの入力値を取得して、その入力値をアラートとしてだすようなものを作成しましょう。
HTMLファイルを作成
テキストエリアとボタンを用意し、それぞれ任意のidをもたせてあげましょう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>バリュー取得</title>
</head>
<body>
<textarea id="textarea"></textarea>
<button id="button">アラート</button>
<script src="main.js"></script>
</body>
</html>
JavaScriptファイルを作成
'use strict';
document.addEventListener('DOMContentLoaded', () => {
console.log('DOMContentLoaded');
// DOMを取得し定数に代入する
const buttonAlert = document.getElementById('button');
const textarea = document.getElementById('textarea');
// ボタンを押したときのクリックイベント
buttonAlert.addEventListener('click', () => {
alert(textarea.value);
})
})
演習2
DOM操作を使って下記のようなものを作成しましょう。
- 「増やす」ボタンを押したらインプットフィールドと現在地を取得し、現在地に入力値を加算して、それを結果用のエリアに表示します。
- 「減らす」ボタンを押したらインプットフィールドと現在地を取得し、現在地に入力値を減算して、それを結果用のエリアに表示します。
結果
0
HTMLファイルを作成
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>カウンター</title>
</head>
<body>
<label for="js-amount">数値</label>
<input type="number" name="amount" id="js-amount">
<button id="js-add-button">増やす</button>
<button id="js-minus-button">減らす</button>
<p>結果</p>
<p id="js-result">0</p>
<script src="main.js"></script>
</body>
</html>
JavaScriptファイルを作成
'use strict';
document.addEventListener('DOMContentLoaded', () => {
console.log('DOMContentLoaded');
// DOMを取得し定数に代入する
const jsAddButton = document.getElementById("js-add-button");
const jsMinusButton = document.getElementById("js-minus-button");
const jsAmount = document.getElementById("js-amount");
const jsResult = document.getElementById("js-result");
// 現在地を0に設定して変数に代入する
let currentValue = 0
// 増やすボタンのクリックイベント
jsAddButton.addEventListener('click', () => {
currentValue += parseInt(jsAmount.value);
jsResult.innerText = currentValue;
})
// 減らすボタンのクリックイベント
jsMinusButton.addEventListener('click', () => {
currentValue -= parseInt(jsAmount.value);
jsResult.innerText = currentValue;
})
})
innerText
は、HTML要素の<開始タグ>と<終了タグ>に内包されたテキストを取得するメソッドです。
jsAmount
は文字列として取得しているので、perseInt
で数値型に変換してあげます。
parseInt(変換したい文字列)
参考記事
ドキュメントオブジェクトモデル (DOM) - Web API | MDN
ドキュメントオブジェクトモデル (Document Object Model, DOM) は、ウェブページを表す HTML のような文書の構造をメモリー内に表現することで、ウェブページとスクリプトやプログラミング言語を接続するものです。ふつうは JavaScript を使用しますが、HTML、SVG、XML などの文書...
コメント