11.1 Selector API:
SelectorsAPI の中心となる 2 つのメソッドは、querySelector() と querySlelctorAll() です。互換性のあるブラウザでは、Domcument タイプと Element タイプのインスタンスを通じて呼び出すことができます。
11.1.1 querySelector() メソッド:
querySelector() メソッドは CSS セレクターを受け取り、セレクターに一致する最初の要素を返します。一致するものがない場合は、null を返します。
ドキュメントを通じて querySelector() メソッドを呼び出すと、ドキュメント要素の範囲内で一致する要素が検索されます。
querySelector() メソッドを呼び出す Elementquery は、要素の子孫要素内で一致する要素のみを検索します
11.1.2 querySelectorAll()
var body=document.querySelector("body"); var p=body.querySelector(".menu_1") // var li=p.querySelector("li"); var li=p.querySelectorAll("li"); for(var i=0;i<li.length;i++){ var list={}; list[i]=li[i].innerHTML; alert(list[i]); }
11.1.3matchesSelector
このメソッドは、CSS セレクターである 1 つのパラメーターを受け取ります。呼び出されたメソッドは、要素に一致する場合に true を返します。
11.2 Element Traversal
Elment Traversal APIは、DOM要素に以下の5つの属性を追加します。
1: childElementCount: 子要素の数を返します。
2: firstElementChild: 最初の子要素、firstChild 要素のバージョンを指します。
3: lastElementChild: 最後の子要素、lastChild 要素のバージョンを指します。 previousElementSibling : 前の兄弟要素を指します。
5: nextElementSibling: 次の兄弟要素を指します。
11.3HTML5
11.3.1 クラス関連の拡張機能
1: getElementByClassName() このメソッドは、1 つまたは指定されたすべての要素を含む NodeList を返すクラス名の文字列。
2: classList 属性: (class="Operation here" の場合)
classList 属性は、新しいコレクション型 DOMTokenList のインスタンスです。他の DOM コレクションと同様です。次のメソッドがあります:
add(value): 指定された文字列をリストに追加します。
contains(value): 指定された値がリストに存在するかどうかを示します。存在しない場合は false を返します。
remove(value) は指定された文字列をリストから削除します
toggle (指定された値がリストに存在する場合は削除し、指定された値が存在しない場合は追加します。)
<p id="select" class="aa ss dd ff hh "></p> <script> var elem = document.getElementById("select"); var classNum =elem.classList; console.log(classNum); </script>
この時点で、次のように渡すことができます。上記のメソッド内でパラメータを操作します。
11.3.2 フォーカス管理
HTML5 には、補助的な DOM 管理の機能も追加されています。 1 つ目は document.activeElement プロパティで、現在フォーカスされている DOM 要素を常に参照します。現在のユーザーがフォーカスしている要素を取得します。
使用します。 focus() メソッド
11.3.3 HTMLDocument の変更点
1:readyState 属性
この属性には 2 つの値があります
1; ドキュメントはロード中です
2: 完了、ドキュメントはロードされました。
document.readyState プロパティを使用する最も適切な方法は、ドキュメントがロードされたことを示すインジケーターを実装するために使用することです。ドキュメントがロードされたことを示します。
if(document.readyState=="complete"){ //执行操作 }
2: 互換モード:
IE6 では、ページのレンダリング モードが標準か混合かを区別するようになったので、IE は、ページが使用するレンダリング モードを開発者に伝えるために、compatMode と呼ばれる属性をドキュメントに追加しました。
戻り値は 2 つあります: CSS1compat と BackComapat です。
はそれぞれ標準モードと混合モードに対応します。
3 .6 タグの挿入 1: innerHTML 属性 読み取りモードでは、innerHTML 属性は、呼び出し元要素のすべての子ノードに対応する HTML タグを返します。書き込みモードでは、innerHTML は指定された値に基づいて新しい DOM ツリーを作成します。 この属性を使用して、指定したタグにタグを追加できますが、すべてのタグがサポートされているわけではありません2: externalHTML 属性読み取りモードでは、outerHTML は要素の HTML タグと、それを呼び出すすべての子ノードを返します。書き込みモードでは、outerHTML は指定された HTML 文字に基づいて新しい DOM ツリーを作成し、呼び出し元の要素をこの DOM サブツリーで完全に置き換えます。var val = elem.outerHTML;
<p id="select" class="aa ss dd ff hh "> <p>this is a test Demo</p> </p>
elem.outerHTML="<p>这是一个测试的demo</p>"
4: afterend 要素の後に隣接する兄弟要素を追加します。 4: メモリとパフォーマンスの問題; このセクションで紹介した方法を使用して子ノードを置き換えると、ブラウザでメモリの問題が発生する可能性がありますが、innerHTML 属性を使用すると依然として大量のトラバーサルが発生するためです。または、outerHTML は HTML パーサーを作成します。このパーサーはブラウザー レベルのコードで実行されるため、js よりもはるかに高速です。 11.3.7scrollIntoViewメソッドScroll11.4.1ドキュメントモード:
ドキュメント モードは、使用できる CSS のレベルと、js で使用できる API を決定します:
ドキュメント モードは合計 4 つあります:
IE5: ページを混合モードでレンダリングします。IE8 以降の新機能はすべて使用できません
IE7: IE7 標準モードでページをレンダリングします。IE8 以降の新機能は使用できません。IE8 のすべての新機能を使用できるため、SelectorsAPI と多くの CSS2 レベル セレクターといくつかの CSS3 機能。いくつかの HTML5 機能もあります
IE9 - IE9 標準モードのレンダリング ページ。すべての新機能が利用可能です。例えば、EMACSript5の機能。
11.4.2 Children 属性
Children 属性と childNodes にはほとんど違いはありません。両方ともすべての子ノードを返すために使用されます。
11.4.3contain (contain) メソッド:
ノードが子ノードであるかどうかを判断するために使用されます。特定のノードの子孫は、英語の文字通りの意味を直接理解できます。
親node.contain(特定のノード): trueを返す場合は含まれ、それ以外の場合はfalseを返します。
compareDocumentPosition() を使用してファイルの位置を比較することもできます。これにより、位置関係を決定するためのいくつかのマスクが返されます
contains() メソッドを模倣するには、16 を返すことに注意する必要があります
11.4.4 挿入text:
1: innerText 属性
は要素内のすべての値を操作し、ドキュメントを浅いものから深いものへとつなぎ合わせます。
と innerHTML の違いは、 innerHTML はすべての要素タグを表示しますが、 innerText は結合された文字列のみを返します
書き込み時には、テキストの子ノードが 1 つだけ表示されます。
2: externalText 属性
その範囲がそのノードを含むように拡張されることを除けば、基本的に、outerText と innerText の間に大きな違いはありません。テキストを読むときは結果はまったく同じですが、書くときはまったく異なります。 externalText は、それを呼び出す要素の子要素を置き換えるだけでなく、要素全体を置き換えます。使用しないことをお勧めします。
11.4.5 スクロール:
1:scrollIntoviewIfNeeded(alignCenter): 要素がビューポートに表示されない場合にのみブラウザをスクロールします。
2:scrollByLines(lineCount): 要素のコンテンツを指定されたページの高さまでスクロールします。lineCount には正または負の値を指定できます。
3:scrollBypage(pageCount): 要素のコンテンツを指定されたページの高さまでスクロールします。特定の高さは要素の高さによって決まります。
注:scrollIntoView() とscrollIntoviewIfNeeded(alignCenter)は要素コンテナに対して機能しますが、scrollByLines(lineCount)とscrollBypage(pageCount)は要素自体に対して機能します。
第 12 章: DOM2 と DOM3
12.1.1 XML 名前空間の変更
XML 名前空間を使用すると、名前の競合を気にせずに、異なる XML ドキュメントの要素を混在させることができます。技術的に言えば、HTML XML 名前空間はサポートされていませんが、XHTML はサポートされません。 XML 名前空間をサポートします。
1: ノード タイプの変更
DOM2 レベルでは、ノード タイプには次の名前空間固有のプロパティが含まれます。
localName: 名前空間プレフィックスのないノード名。
namespaceURL: ネームスペース URL が null です。
prefix: 名前空間プレフィックスまたは null。
2: ドキュメント タイプの変更
DOM2 レベルのドキュメント タイプも変更されており、次の名前空間関連のメソッドが含まれています。
createElementNs(namespaceURI,tagName): 指定された tagName を使用して、名前空間 namespaceURI に属する新しい要素を作成します。
createAttributeNS(nameSpaceURI,attributeName) 指定されたattributeNameを使用して、名前空間nameSpaceURIに属する新しい属性を作成します。
getElementByTagNameNs(namespaceURI, tagName) は、名前空間 URI に属する tagName 要素の NodeList を返します。
3: 要素タイプの変更
「DOM レベル 2」の要素に関連する変更は、主に操作上の特性に関係します。新しい方法は以下の通りです。
getAttributeNS(namespaceURI, localName) 名前空間 URI の名前付き localName の属性を取得します
getAttributeNodeNS(namespaceURI, localName) 名前空間 URI に属し、localName という名前の属性ノードを取得します
getElementsByTagNameNS(namespaceURI, tagName) は、次の属性を返しますnamespaceURI
の名前空間nodeListに属しますhasAttributeNS(namespaceURI, localName)は、現在の要素がlocalNaemという名前の属性であり、この属性の名前空間がnamespaceURIであると判断します
removeAttributeNS(namespaceURI, localName)は、名前空間に属する属性を削除しますURI で名前は localName
setAttributeNS(namespaceURI,qualifiedName,value): 名前空間 namespaceURI と名前付きqualifiedName に属する属性値を value に設定します
setAttributeNodeNS(attNode) 名前空間 namespaceURI に属する属性ノードを設定します
4: 変更点NamedNodeMap 型の場合
属性により、NamedNodeMap で表されるため、これらのメソッドはほとんどの場合、機能に対してのみ使用されます
1: getNamedItemNS (namespaceURI, localName): 名前空間 URI に属し、 named localName
2:removeNamedItemNS(namespaceURI, localName):move 名前空間namespaceURIに属しlocalNameという名前の項目を除く
3:setNamedItemNS(node):Addノード、このノードは事前に名前空間情報を指定しています。
プロパティは通常要素を通じてアクセスされるため、これらのメソッドはほとんど使用されません。
12.1.2 その他の変更点
1: documentType タイプの変更点
3 つの属性を追加しました: publicID systemId と externalSubset。
2: ドキュメント タイプの変更:
DOM レベル 2 コアは依然としてドキュメントです。実装オブジェクトは、creatDocumentType() と creatDocument() という 2 つの新しいメソッドを指定します。前者は、新しい DocumentType ノードを作成するために使用され、ドキュメント タイプ、publicID、systemID の 3 つのパラメーターを受け入れます。 document() メソッドは、次の 3 つのパラメータも受け入れます: namesp-aceURI、ドキュメント要素のタグ名、新しいドキュメント タイプ
3: ノード タイプの変更
isSupported() メソッドを追加しました: 現在のノードが何を持っているかを判断するために使用されます能力。
このメソッドは、機能名と機能バージョン番号の 2 つのパラメーターを受け取ります。
12.2 スタイル
HTML でスタイルを定義するには、外部 、埋め込み