JS勉強記⑤DOMとは/idをキーに要素を取得
DOMとは
DOM(Document Object Model)とは「JSで記述されたプログラムからHTML/XMLにアクセスしてWebページを動的に操作する」方法。DOMツリーとはHTML/XMLをツリー構造で表現したもの。<body>タグの下に<h>タグがある、という形を指す。この時の各オブジェクト(<body>、<h>等)のことをノードと言う。
「ブラウザオブジェクト」という階層構造の中の「Documentオブジェクト」がイコールDOMを指す。(ブラウザ内でHTML/XMLで記述されている部分)
「ブラウザオブジェクト」は「Windowオブジェクト」を筆頭に様々なオブジェクトを含んでいる。(履歴やブラウザの進退操作を担当する「History」、ブラウザ名やバージョン等のブラウザ固有情報を提供する「Navigater」等)
IDをキーに要素を取得
getElementByIdメソッドを利用し、HTMLで指定したidをもとにその要素を取り出す。基本構文は以下の通り。
document.ElementById(id:取得したい要素のid値)
※指定したidがHTML内になければnullを返す
※HTML内でidは重複しないこと
例題
現在のid:resultの内容(テキスト)をコンソールに表示。id:resultの内容(テキスト)を、現在時刻(日時)に書き換え。
元のHTMLの<body>要素は↓の通り。
<body>
<p id="result">pタグの文字列です。</p>
<input type="button" value="取得" onclick="show()">
<script src="js/element_id.js" charset="utf-8"></script>
</body>
「<p>タグの下に作成した『取得』ボタンを押すと、コンソールに<p>タグの要素が表示され、その代わりにHTMLの<p>タグの要素が現在時間に書き換わる」のが完成動作。
ここでは<p>タグのidは"result"で設定済み。<input>タグのonclickは「ボタンをクリックされたときの動作」を指定する。今回は後程設定するshow関数が動作するように指定。
JSの内容は↓の通り。
function show() {
const result = document.getElementById('result');
console.log(result.innerText);
const nowDate = new Date();
result.innerText = nowDate.toLocaleString();
}
①function命令でshow関数を定義。
②resultを宣言し、getElementByIdメソッドで要素を呼び出すIDを'result'に指定。
③id:resultの内容をコンソールに出力するため、「result.innerText」を呼び出し。すると.innerTextプロパティの影響で<p>タグの文字列「pタグの文字列です。」のみコンソールに出力される。
④nowDateを宣言し「new Date()」で現在時刻を取得。
⑤③で使用した「result.inneText」を現在時刻に書き換えるので 「= nowDate.toLocaleString()」と記述。.toLocaleStringプロパティではオブジェクトの言語に対応した表記(ここでいえば日本語)に変換する。
⑥完成動作の通り動けばOK。
正直例題いきなり出されても解けないな…constで正常に動作したので良しとしよう。