JavaScriptのDOMは、「ドキュメントオブジェクトモデル」(ドキュメントオブジェクトモデル)と呼ばれる、Webインタフェースを操作しています。これは、スクリプト(たとえば、追加または削除、コンテンツなど)の各種操作を行うことができますJavaScriptオブジェクトに変換するウェブページの役割です。DOM最小構成単位と呼ばれるノード(ノード)、ノードの一般的なタイプは4つあります。
- ドキュメント:文書全体のツリーの最上位ノード。
- エレメント次のような種々の標識、のページ
<body>
。- テキスト:ラベルやタグ、テキストが含まれています。
- ATTR次のようなページ要素の属性、
class="right"
。
一、Node
すべてのDOMノードオブジェクトが継承するNode
インタフェースは、いくつかの一般的なプロパティとメソッドを持っています。これは、基礎DOM操作です。
1.1オブジェクトのプロパティ
baseURI
プロパティは、(反対ページにブラウザのURLパスをプロパティに基づいて計算される)現在のページの絶対パスを表す文字列を返します。この属性の値は、(すなわち、現在のURLのURLで一般的にwindow.location
決定属性)。HTMLをするために使用することができる<base>
ラベル属性の値を変更します。isConnected
プロパティは、ドキュメント内の現在のノードかどうかを示すブール値を返します。nodeType
プロパティは、現在のノードのタイプを表す整数値を返します。Node.DOCUMENT_XXXは、上述した様々なタイプによって定義されます。nodeName
プロパティは、現在のノードの名前を表す文字列を返します。nodeValue
プロパティは、テキストノード自身の現在の値を表す文字列を返します。テキスト値で注釈を付けた要素のみ、テキストは、ノードの他のすべてのタイプを返しますnull
。textContent
プロパティは、現在のテキストノードおよびそのすべての子孫ノードを表す文字列を返します。それは自動的にすべてのテキストコンテンツを返し、ノード内の現在のHTMLタグを無視します。parentNode
プロパティは、現在のノードの親ノードを返します。ドキュメント・ノード(文書)、要素ノード(要素)とドキュメントフラグメントノード(ドキュメント・):ノードに対して、その親ノードは3種類のみであってもよいです。nextSibling
現在のノードの最初の兄弟ノードは、属性(要素、テキスト、コメント)を返します。何も存在しませんnull
。previousSibling
このプロパティは、ノードの前の最初の兄弟ノード(要素、テキスト、コメント)を返します。何も存在しませんnull
。firstChild
プロパティは、現在のノード(要素、テキスト、コメント)の最初の子ノードを返します。現在のノードに子がない場合は、それが返されますnull
。lastChild
現在のノードの最後の子属性ノード(要素、テキスト、コメント)を返します。現在のノードに子がない場合は、それが返されますnull
。childNodes
プロパティは、配列オブジェクトのクラス(返しNodeList
、現在のノード(要素、テキスト、コメント)のすべての子ノードのメンバーを含む、セット)。以来、
NodeList
子ノードの変更が即座に結果に反映された後の目的は、動的なコレクションで返されます。
場合は上記リターンテキストノードスペースの前に現在のノードた場合、プロパティは、テキストノード、コンテンツのスペースを返します。
1.2オブジェクトのメソッド
hasChildNodes
メソッドは、現在のノードが子を持つかどうかを示すために使用されます。insertBefore
ノードのノード以前に指定された子ノードを挿入するための方法(挿入すべきノードが現在DOMノードが存在している場合、ノードは元の位置から削除され、新しい位置を挿入)。最初のパラメータは、挿入するノードの方法でありnewNode
、2番目のパラメータは、子ノードであるreferenceNode
(第2のパラメータがある場合null
、新しいノードは、すなわち、最後の子ノードになり、現在のノード内の最後の位置に挿入されています)。戻り値は、新しいノードが挿入されていますnewNode
。removeChild
現在のノードからサブノードを除去する方法。メソッドのパラメータには、削除する子ノードです。戻り値は削除したノードです。replaceChild
新しいノードに使用される方法は、現在のノードの子を交換してください。メソッドの最初のパラメータは、newChild
新しいノードを置き換えるために使用され、2番目のパラメータは、oldChild
子ノードを取るために交換されます。戻り値は、どこへ行くか、交換ノードですoldChild
。getRootNode()
この方法は、現在のドキュメントのドキュメントのルートノードを返します。
二、ドキュメント
document
Nodeオブジェクトは、各ページには独自の持っている、文書全体を表しているdocument
オブジェクトを。このノードは2つのつの子ノードを有している:最初のノードは、文書タイプである(<!doctype html>
); HTMLページの上から2番目のコンテナタグ<html>
他のHTMLタグをノードである後者は、ツリー構造のルートノード(ルートノード)を構成し、下位ノード。document
オブジェクトを取得することができ、さまざまな方法があります。
- 通常のWeb:使用します
document
かwindow.document
。 iframe
ウェブ:使用してiframe
ノードcontentDocument
のプロパティを。
2.1オブジェクトのプロパティ
doctype
所有財産を返します<DOCTYPE>
ノード。document.firstChild
通常、このノードを返します。documentElement
Currentプロパティは、文書のルート要素ノードを返します。document.lastChild
通常、このノードを返します。head
属性が指す<head>
ノード。省略されたページのソースコードは、ブラウザが自動的に作成される場合、このプロパティは、常にあります。body
プロパティを返し<body>
たノードを。省略されたページのソースコードは、ブラウザが自動的に作成される場合、このプロパティは、常にあります。location
プロパティは、関連するURL情報と操作方法を提供する、ブラウザによって提供されるネイティブオブジェクトです。cookie
オブジェクトは、ブラウザのクッキーを動作させるために、ブラウザによって提供されるネイティブ属性。
2.2オブジェクトメソッド
querySelectorAll
戻りマッチングノードセレクタ要素、戻りの指定方法NodeList
インスタンス。戻り結果は、それが要素ノードでのリアルタイムの変化を反映していない、動的なコレクションではありません。複数のノードが整合条件を満足する場合、最初に一致するノードが返されます。一致するものが見つからない場合はノードが返されますnull
。それがサポートされていないCSSセレクタは、擬似要素(など:first-line
と:first-letter
)、および(例えば、擬似クラスセレクタ:link
と:visited
擬似要素と擬似クラスを選択することができません)。getElementById
指定されたメソッドが返すと一致id
返し、要素ノードの属性NodeList
文書の変更を反映するために、非リアルタイムのインスタンスを。getElementsByName
この方法は、マッチング返しname
要素ノードの属性を返すNodeList
文書の変更を反映するために、非リアルタイムのインスタンス。getElementsByTagName
本方法は、一致するタグのノードを返しHTMLCollection
インスタンスを、リアルタイムに文書の変更を反映することができます。getElementsByClassName
この方法は、ノードクラスの一致の名前を返しHTMLCollection
、文書のインスタンスは、実時間の変化を反映することができます。createElement
要素ノードを生成するための方法、および戻りノード。createAttribute
この方法は、新しい属性ノード(生成Attr
インスタンス)、およびノードに戻ります。createEvent
イベントオブジェクト(生成方法Event
インスタンス)は、オブジェクトがすることができるelement.dispatchEvent
方法であって、指定されたトリガイベントを使用します。パラメータ方法は、イベントの種類、などでありUIEvents
、MouseEvents
、HTMLEvents
など。イベント処理は、次の章を参照します。
三、属性
3.1オブジェクトのプロパティ
Element.attributes
プロパティは、動的オブジェクトの同様の配列を返し、メンバーは、要素タグノードオブジェクトのすべての属性であり、変化はノード・オブジェクトにリアルタイムに反映される属性。プロパティ自体がオブジェクトである(Attr
オブジェクト)。したがって、アレイの上記の特性と同様ではなく、属性値よりも、ノードオブジェクトを返されます。Nodeオブジェクトは、プロパティがあるname
とvalue
、属性、属性名と値に相当すべき性質nodeName
の特性とnodeValue
属性を。
HTMLの属性名は、キーのJSを回す:あなたは、すべて小文字をJSの属性名を有効にすると、属性名が複数の単語、ラクダのスペルの使用を含む場合。いくつかのHTML属性の名前は、JSのプロパティを回す際のJavaScriptの予約語は、主に以下の2、名前を変更する必要があります:
for
プロパティへhtmlFor
class
プロパティへclassName
Element.dataset
プロパティは、オブジェクトを返し、オブジェクトはこのから読み取ることができますdata-
プロパティ。同様に<div data-timestamp="1522907809292"></div>
、<div>
要素は、カスタム持つdata-timestamp
タイムスタンプを追加するために使用される要素のプロパティを。
HTMLの属性名は、JSキーを回す:へのターン
dataset
時にキー名、小文字が続く場合は併せてラインが続き、その後、一緒ラインが他の文字変わらず、大文字と小文字を削除されます。逆にdataset
キーは属性名に電源を入れたときに、すべて大文字の文字が一緒ライン+小文字に変換され、他の文字変更されません。dataset.helloWorld
に変わりますdata-hello-world
。
3.2オブジェクトメソッド
hasAttribute
この方法は、現在のノードが指定されたプロパティの要素を含むかどうかを示すブール値を返します。getAttribute
この方法は、指定されたプロパティの現在の要素ノードを返します。指定されたプロパティが存在しない場合は、それが返されますnull
。setAttribute
現在の新しいプロパティ要素のために使用される方法。同じ名前の属性がすでに存在する場合は、編集既存のプロパティは同じです。removeAttribute
指定されたプロパティを除去する方法。