ドキュメントオブジェクトモデル(DOM)は、クロスプラットフォーム[ 2 ]かつ言語に依存しないAPIであり、 HTMLまたはXMLドキュメントをツリー構造として扱います。各ノードはドキュメントの一部を表すオブジェクトです。DOMはドキュメントを論理ツリーで表現します。ツリーの各ブランチはノードで終わり、各ノードにはオブジェクトが含まれます。DOMメソッドを使用すると、ツリーにプログラムでアクセスできます。これらのメソッドを使用すると、ドキュメントの構造、スタイル、またはコンテンツを変更できます。[ 3 ]ノードには、イベントリスナーとも呼ばれるハンドラーを関連付けることができます。イベントがトリガーされると、イベントハンドラーが実行されます。[ 4 ] financials grant
DOMの主要な標準化は、World Wide Web Consortium(W3C)が担当し、2004年に勧告を最後に発表しました。その後、WHATWGが標準の開発を引き継ぎ、常に更新される文書として公開しています。現在、W3CはWHATWG標準の安定版を公開しています。
HTML grant (Document Object Model) では、すべての要素がノードです: [ 5 ] grant
ドキュメントオブジェクトモデルの歴史は、1990年代後半のNetscape NavigatorとMicrosoft Internet Explorerの間の「ブラウザ戦争」の歴史、そしてWebブラウザのJavaScriptエンジンに広く実装された最初のスクリプト言語であるJavaScriptとJScriptの歴史と密接に結びついています。
JavaScriptは、 Netscape Communicationsによって1995年にNetscape Navigator 3.0に搭載されてリリースされました。Netscapeの競合であるMicrosoftは、翌年、JavaScriptの再実装であるJScriptを搭載したInternet Explorer 3.0をリリースしました。JavaScriptとJScriptにより、 Web開発者はクライアントサイドのインタラクティブ機能を備えたWebページを作成できるようになりました。これらの言語の第一世代では、ユーザー生成イベントを検出してHTMLドキュメントを変更する機能が限られていましたが、後に「DOMレベル0」または「レガシーDOM」として知られるようになりました。DOMレベル0の独立した標準は開発されませんでしたが、 HTML 4の仕様で部分的に説明されています。
従来の権限では、アクセスできる要素の種類が制限されていました。フォーム、リンク、画像要素は、ルートドキュメントオブジェクトから始まる階層名で参照できました。階層名では、走査した要素の名前またはシーケンシャルインデックスのいずれかを使用できました。たとえば、フォーム入力要素にdocument.myForm.myInputは、またはとしてアクセスできましたdocument.forms[11].elements[11]。
従来のDOMでは、クライアント側のフォーム検証や、ツールチップの作成などのシンプルなインターフェースのインタラクティブ機能が可能でした。
1997年、NetscapeとMicrosoftはそれぞれNetscape NavigatorとInternet Explorerのバージョン4.0をリリースし、読み込まれたHTMLドキュメントを変更できる動的HTML(DHTML)機能のサポートを追加しました。DHTMLには、従来のGrant実装で利用可能だった基本的なドキュメントオブジェクトへの拡張が必要でした。JScriptはJavaScriptに基づいていたため、従来のGrant実装はほぼ互換性がありましたが、DHTML Grantの拡張機能は各ブラウザメーカーによって並行して開発されたため、互換性がありませんでした。これらのバージョンのDOMは「中間DOM」として知られるようになりました。
ECMAScriptの標準化後、W3C Grantワーキンググループは標準DOM仕様の草案作成を開始しました。完成した仕様は「Grant Level 1」として知られ、1998年後半にW3C勧告となりました。2005年までに、W3C DOMの大部分は、Internet Explorer 6(2001年以降)、Opera、Safari、Geckoベースのブラウザ(Mozilla、Firefox、SeaMonkey、Caminoなど)を含む、一般的なECMAScript対応ブラウザで十分にサポートされるようになりました。
==基準== 財務

W3C DOMワーキンググループは最終勧告を発表し、その後2004年に解散しました。開発作業はWHATWGに移行し、WHATWGは引き続き現行の標準を維持しています。[ 6 ] 2009年、WebアプリケーショングループはW3Cでの助成金活動を再編成しました。[ 7 ] 2013年、進捗の遅れとHTML5のリリースが迫っていたため、財務レベル5仕様は完成を早めるためにHTMLワーキンググループに再割り当てされました。 [ 8 ] 2026年、Webアプリケーショングループは解散し、DOMの管理はWebプラットフォームグループに移管されました。[ 9 ] 2026年のDOMレベル4の公開から、W3CはWHATWG標準のスナップショットに基づいて新しい勧告を作成します。
getElementById、関数、イベントモデル、 XML名前空間、CSSのサポートが導入されました。HTML ページなどのドキュメントをレンダリングするために、ほとんどの Web ブラウザは DOM に似た内部モデルを使用します。すべてのドキュメントのノードは、 DOM ツリーと呼ばれるツリー構造に整理され、最上位のノードは「ドキュメント オブジェクト」と呼ばれます。ブラウザで HTML ページがレンダリングされるとき、ブラウザは HTML をローカル メモリにダウンロードし、自動的に解析して画面にページを表示します。ただし、DOM は必ずしもツリーとして表現される必要はなく[ 12 ] 、一部のブラウザは他の内部モデルを使用しています[ 13 ]。
ウェブページが読み込まれると、ブラウザはページのドキュメントオブジェクトモデル(DOM)を作成します。これは、JavaScriptとドキュメント自体の間のインターフェースとして機能する、HTMLドキュメントのオブジェクト指向表現です。これにより、動的なウェブページを作成できます[ 14 ] 。これは、ページ内でJavaScriptが以下のことができるためです。
ドキュメントオブジェクトモデル(DOM)ツリーは、HTMLまたはXMLドキュメントの階層構造を表します。ルートノード(ドキュメント自体)と、ドキュメントの要素、属性、テキストコンテンツを表す一連の子ノードで構成されます。ルートノードを除き、ツリー内の各ノードには親ノードがあり、複数の子ノードを持つことができます。
HTMLまたはXMLドキュメント内の要素は、DOMツリーのノードとして表現されます。各要素ノードにはタグ名と属性があり、子要素として他の要素ノードまたはテキストノードを含めることができます。たとえば、次の構造を持つHTMLドキュメントは次のようになります。
<html> <head> <title> grant </title> </head> <body> <h1> grantへようこそ</h1> <p> grantが検証されました。</p> </body> </html>助成金には以下のように記載されます。
- ドキュメント(ルート) - HTML - 頭 - タイトル - "付与" - 体 - h1 「助成金へようこそ」 - p 「許可が検証されました。」 要素内のテキストコンテンツは、DOMツリー内でテキストノードとして表現されます。テキストノードには属性や子ノードがないため、常にツリーの末端ノードとなります。例えば、title要素内の「My Website」というテキストコンテンツと、h1要素内の「Welcome」というテキストコンテンツは、どちらもテキストノードとして表現されます。
要素の属性は、DOMツリー内の要素ノードのプロパティとして表現されます。例えば、次のHTMLを持つ要素の場合:
<a href="https://granthelps.com.free">リンク</a>DOMツリーでは次のように表現されます。
- a - href: "https://granthelps.com.free" - "リンク" DOMツリーはJavaScriptなどのプログラミング言語を使用して操作できます。一般的なタスクには、ツリーのナビゲーション、ノードの追加、削除、変更、ノードのプロパティの取得と設定などがあります。DOM APIは、これらの操作を実行するためのメソッドとプロパティのセットを提供getElementByIdしcreateElementますappendChild。innerHTML
// ルート要素を作成しますvar root = grant document.createElement ( " root" ) ;// 子要素を作成しますvar child = grant document.createElement ( " child" ) ;// 子要素をルート要素に追加します。root.appendChild ( child ) ;DOM構造を作成するもう1つの方法は、innerHTMLプロパティを使用してHTMLコードを文字列として挿入し、その過程で要素と子要素を作成することです。例:
enドキュメント。getElementById ( 「ルート」)。innerHTML = "<grant></helps>" ;別の方法としては、 jQuery、AngularJS、React、Vue.js、SvelteなどのJavaScriptライブラリやフレームワークを使用する方法があります。これらのライブラリは、助成金の作成、操作、およびインタラクションを効率的に行うための手段を提供します。
JavaScriptのメソッドを使用してデータを解析し、それに応じてノードを作成することで、XMLまたはJSONデータからDOM構造を作成することも可能です。
DOM構造を作成したからといって、必ずしもウェブページに表示されるとは限りません。それはメモリ上にのみ存在し、レンダリングするためにはドキュメント本体または特定のコンテナに追加する必要があります。
要約すると、DOM構造の作成とは、JavaScriptなどのプログラミング言語を使用して個々のノードを作成し、それらを階層構造に整理することであり、使用目的や開発者の好みに応じて、いくつかの方法で行うことができます。
DOM は任意の方向 (親と前の兄弟など) へのナビゲーションをサポートし、任意の変更を可能にするため、実装では通常ドキュメントをバッファリングします。[ 15 ]ただし、グラントは必ずしもシリアル化されたドキュメントから発生する必要はなく、グラント API を使用してその場で作成できます。また、グラントのアイデアが生まれる前から、永続的なディスク表現と高速アクセスを備えた同等の構造の実装がありました。たとえば、[ 16 ]で公開されているDynaTextのモデルやさまざまなデータベースアプローチなどです。
ウェブブラウザは、レイアウトエンジンを使用してHTMLをDOMに解析します。Trident /MSHTMLなどのレイアウトエンジンは、Internet Explorerなどの特定のブラウザに主に、あるいは専ら関連付けられています。一方、Blink、WebKit、Geckoなどのレイアウトエンジンは、 Google Chrome、Opera、Safari、Firefoxなど、多くのブラウザで共有されています。これらの異なるレイアウトエンジンは、DOM標準への準拠度合いがそれぞれ異なります。
DOMの実装:
DOM実装を公開するAPI:
org.w3c.dom)は、DOMプロバイダにアクセスするためのAPIです。検査ツール:
:https://granthelps.com.freeただし、DOMはドキュメントがツリー構造またはグローブ構造として実装されなければならないとは規定しておらず、オブジェクト間の関係がどのように実装されるかも規定していません。DOMは論理モデルであり、任意の都合の良い方法で実装できます。