今回は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についてさらに学んでいきます。
カテゴリー
更新記事
- 『日本経済新聞』を読む 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レーザー)
- 『会社四季報 2024年 3集 夏号』を読む 17(DSP、サーメタル、自動小銃、ダイカストマシン、FPSO、サーボモーター、水晶振動子)
- 『会社四季報 2024年 3集 夏号』を読む 16(クロスセル、eVTOL、CFCC、RFID、配当性向、事業承継)
- 『会社四季報 2024年 3集 夏号』を読む 15(SiC半導体、NAS電池、フェロニッケル、フェライト粉、スポンジチタン)
- 『会社四季報 2024年 3集 夏号』を読む 14(AI警備システム、プロダクトアウト、ホットメルト接着剤、放熱ゲル、パイル、カソード)
- 『会社四季報 2024年 3集 夏号』を読む 13(PLM、ファクタリング、BCP、グリシン、メタクリル樹脂、アクティブシニア)
- テーマ株投資(6か月)
- 『会社四季報 2024年 3集 夏号』を読む 12(カプロラクタム、ゼロトラスト、RAG、ERP、シリカ)
- 『会社四季報 2024年 3集 夏号』を読む 11(オリゴマー、エッジAI、MLCC、ジルコニウム、アセチレンガス、ファインケミカル)
- 『会社四季報 2024年 3集 夏号』を読む 10(フラッシュハンドル、自動配膳ロボット、R-SUD、レコメンド機能、マーチャンダイジング、エレクトロニクスガス、コーシャ認証)
- 『会社四季報 2024年 3集 夏号』を読む 9(ペロブスカイト太陽電池、プロテイン、銀だこ、尿素SCR、エクソソーム)
- 『会社四季報 2024年 3集 夏号』を読む 8(ドミナント、EBITDA、SAF、消防車、キャンプ用品、GIGAスクール、ボウリング場)
- 『会社四季報 2024年 3集 夏号』を読む 7(MD、パーム椰子、GMS、EC、デジタルサイネージ、ハラール認証、ヴィーガンコスメ)
- 『会社四季報 2024年 3集 夏号』を読む 6(BIM、CMS、つけまつげ、CDMO、BNPL、EDI、CRM)
タグ
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) ことば (13) アンガーマネジメント (1) インソース (1) ココナラ (11) コーチング (1) チーズ (2) ネズミ (2) ノート (2) パーソルホールディングス (3) ブランディング (1) ブランド (1) プログリット (1) ポート (1) メモ (2) リスキリング (1) リンクアンドモチベーション (2) 変数 (3) 学習 (1) 小人 (2) 怒り (1) 株式 (29) 用語 (6) 睡眠 (3) 給水器 (1) 記憶 (3) Aoba-BBT (11) IGS (11) Kラーニング (1)