今回はDOMという概念を学んでいきます。
1 DOM について
この Document Object Model は HTML の要素を操作するため、JavaScript で用いるものです。
これまで、いろいろなものをオブジェクトとして扱ってきましたが、DOM は HTML そのものをオブジェクトとして考えます。
HTML(一部)
<body>
<h1>学年</h1>
<ul>
<li>1年生</li>
<li>2年生</li>
<li>3年生</li>
</ul>
<p>それぞれ5組まであります。</p>
</body>
ブラウザ
学年
- 1年生
- 2年生
- 3年生
それぞれ5組まであります。
これを「階層構造」という点に着目してみると以下のようになります。
階層構造
body
→ h1
→ ul → li
→ li
→ li
→ p
h1、ul、p の3つの要素は、body の下にあり、li の3つは ul の下に位置しています。
このようなツリーの階層構造により HTML が構成されています。
これらの要素をオブジェクトに見立てて、HTML を操作しようというのが DOM です。
そして、各要素を「ノード」と言いますが、body などの「要素ノード」をエレメントと呼んでいます。
2 DOM を使う
さて、この仕組みを使っていきましょう。
「オブジェクト」とみなすのですから、それを操作するのは「メソッド」ということになりますね。
HTML(一部)
<body>
<ul>
<li>1年生</li>
<li>2年生</li>
<li>3年生</li>
</ul>
<script>
let grade = document.querySelector("ul");
let add = document.createElement("li");
add.textContent = "4年生";
grade.appendChild(add);
</script>
</body>
ブラウザ
・1年生
・2年生
・3年生
・4年生
document.write を使用していないのに、「4年生」がリストとして出力されています。
順番に見ていきましょう。
HTML(一部)
<body>
<ul>
<li>1年生</li>
<li>2年生</li>
<li>3年生</li>
</ul>
ここはリストを作成している部分です。
HTML(一部)
<script>
let grade = document.querySelector("ul");
ここからが JavaScript の部分となります。
上記のリストをオブジェクトとみなして処理していくので、まずはオブジェクトを取得する必要があります。
document オブジェクトには、querySelector というメソッドがあります。
引数に ul を指定しているので、ul タグの要素を取得していることになります。
その内容を 変数 grade に代入しています。
HTML(一部)
let add = document.createElement("li");
次に、変数 add を用意して、そこに li タグのオブジェクトを作成します。
この時点で、li 要素には何もありません。
HTML(一部)
add.textContent = "4年生";
grade.appendChild(add);
</script>
</body>
ここでは新たな変数 add に対して、textContent メソッドを適用しています。
これはノード(構成要素)にテキストを設定することができます。
上の例では、変数 add に「4年生」を代入していますので、結局、変数 add の内容は「<li>4年生</li>」ということになります。
そして、変数 grade に対して appendChild メソッドを適用することにより、変数 grade に変数 add の内容が追加されます。
ブラウザ
・1年生
・2年生
・3年生
・4年生
繰り返しますが、document.write を使用していないのに、「4年生」がリストの項目として出力されています。
なんだか不思議な気もしますが、最初に作成した「1年生」から「3年生」までのリストを、DOMオブジェクトの操作によって、その構造が変更されただけなのです。
3 残念なお知らせ
DOMというものはWebページを動的に変更するなど、もはや開発において重要な技術なのだそうです。
さらに、HTMLを単なる静的なページとしてだけでなく、Webアプリケーションのような動的なページとすることができるとのことです。
しかし、document.write は、DOMとの関係でその使用については「強く非推奨」とされていて、学習ではともかく実際のサイト構築には使わない方がいいどころか、使ってはいけない とまでされています。
4 次回
次回は、DOMについてさらに学んでいきます。
カテゴリー
更新記事
- 『日本経済新聞』を読む25(モルドバ、スマートロック、バリ、二重価格、ニッチ)
- 『日本経済新聞』を読む24(FTS、焼酎、化粧水、防災ビジネス、一太郎)
- 『日本経済新聞』を読む23(人工芝、睡眠市場、東海道新幹線、地雷、酸化ガリウム)
- 『日本経済新聞』を読む22(ポータブル電源、ズワイガニ、モルディブ、リチウム、ロブスター)
- 『日本経済新聞』を読む21(高速船、駄菓子、レンタル自習室、PFAS、戻りガツオ)
- 『日本経済新聞』を読む20(書店、コネクテッドカー、アゼルバイジャン、アルメニア、服薬)
- 『日本経済新聞』を読む 19(アボカド、飼料、ビレット、電動キックボード、フレア)
- テーマ株投資(9か月)
- 『日本経済新聞』を読む 18(背徳、デフリ、シアヌークビル港、デジタルノマド、企業博物館)
- 『日本経済新聞』を読む 17(在庫、字幕、梅田、エクセル職人、耐震シェルター)
- 『日本経済新聞』を読む 16(初任給、ウイスキー、スリランカ、クジラ肉、宇宙ごみ)
- 『日本経済新聞』を読む 15(配当貴族、スマートウォッチ、底引き網、ねこ住宅、電池の冷却)
- 『日本経済新聞』を読む 14(サービス収支、つながらない、租税回避地、電池寿命、置き社食)
- 『日本経済新聞』を読む 13(鉄鉱石、内需株、画像診断、ハブ空港、LCC)
- 『日本経済新聞』を読む 12(アンチモニー、おもちゃショー、スタートアップ、燃料電池、送電)
- 『日本経済新聞』を読む 11(にがり、おせち、ダチョウ、災害ドローン、ビジネスホテル)
- 『日本経済新聞』を読む 10(航空エンジン、金型、国際会議、PCE、ゲーム機)
- 『日本経済新聞』を読む 9(家計金融資産、車載半導体、ホタテ、コンテナ、GPU)
- 『日本経済新聞』を読む 8(北陸新幹線、車中泊、ジョブ型、GPIF、メタンハイドレート)
- 『日本経済新聞』を読む 7(紙、ラストワンマイル、リユース市場、カード審査、ボルダリング)
- 『日本経済新聞』を読む 6(iPS細胞、騰落レシオ、短期プラ、REIT、フードテック)
- 『日本経済新聞』を読む 5(ナフサ、ビール、輸入牛肉、悪玉コレステロール、核融合)
- 『日本経済新聞』を読む 4(ダビンチ・サージカル・システム、ゼロエミッション船、クッキー、LBO、洋上風力発電)
- 『日本経済新聞』を読む 3(変動金利、HSP、スリープテック、双腕ロボット、物流パレット)
- 『日本経済新聞』を読む 2(DAC、株主優待、オピオイド、ベトナム車市場、離れ小島)
- 『日本経済新聞』を読む 1(リバースメンタリング、CBT、EBPM、地方創生DAO、IBD)
- テーマ株投資(7か月)
- 『会社四季報 2024年 3集 夏号』を読む 20(RPF、DtoC、ToF、駅ナカ、CX)
- 『会社四季報 2024年 3集 夏号』を読む 19(ATC、プローブカード、ニューデリー、商品CFD、SUV、FPC、IFRS)
- 『会社四季報 2024年 3集 夏号』を読む 18(シャリ玉ロボット、YAGレーザー、シナジー、SaaS、クルーズ、DFBレーザー)
タグ
break (1) class (3) collection (6) continue (1) CSS (2) DOM (2) for (1) function (3) HTML (8) if (2) JavaScript (28) object (5) pop (1) push (1) shift (1) switch (1) unshift (1) VBA (1) while (2) ことば (25) アンガーマネジメント (1) インソース (1) ココナラ (12) コーチング (1) チーズ (2) ネズミ (2) ノート (2) パーソルホールディングス (4) ブランディング (1) ブランド (1) プログリット (1) ポート (1) メモ (2) リスキリング (1) リンクアンドモチベーション (3) 変数 (3) 学習 (1) 小人 (2) 怒り (1) 新聞 (2) 株式 (30) 用語 (16) 睡眠 (3) 給水器 (1) 記憶 (3) Aoba-BBT (12) IGS (12) Kラーニング (1)