JavaScriptシリーズ(23):JavaScriptとDOM(上)--初心者にも適用
23175 ワード
ドキュメントオブジェクトモデルDocument Object Model
DOM(Document Object Model、ドキュメントオブジェクトモデル)は、JavaScriptとのコンテンツインタラクションによるAPIである.JavascriptとDOMは一般的に全体としてよく使われています.Javascriptは通常DOM操作とインタラクションに使用されるからです.
主な内容:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-series-lesson-1/
DOMについては、いくつかの知識に注意する必要があります:1.Windowsオブジェクトはグローバルオブジェクトとして、つまりWindowsを通じてグローバルオブジェクトにアクセスできます.プロパティは、オブジェクトの下に変数として格納され、ページに作成されたすべてのグローバルオブジェクトがwindowオブジェクトのプロパティになります. メソッドは、オブジェクトの下に関数として格納されます.左右の関数がwindowオブジェクトの下に格納されるため、メソッドとも呼ばれます.
2.DOMは、nodeノードを介して構成されたWebドキュメントの階層を作成します.ここでは、いくつかのDOM nodeタイプがあります.最も重要なのは、Element、Text、Documentです. Elementノードはページに要素が表示されているので、段落要素()があれば、このDOMノードからアクセスできます. Textノードはページに表示されているすべてのテキスト関連要素なので、段落にテキストが入っていればDOMのTextノードを通じて直接このテキスト にアクセスできます. Documentノードは、DOMのルートノードであるドキュメント全体を表します.
3.各エンジンはDOM規格の実装に対して少し異なる.例えば、Firefoxブラウザが使用するGeckoエンジンは良好な実装(W 3 C仕様を完全に遵守していないにもかかわらず)を持っているが、IEブラウザが使用するTridentエンジンの実装は不完全でバグもあり、開発者に多くの問題をもたらしている.
Firefoxを使用している場合は、すぐにFirebugプラグインをダウンロードすることをお勧めします.DOM構造を理解するのに役立ちます.
Web上のJavaScript
Script要素
WebサイトのページでJavaScriptを使用する場合は、SCRIPT要素を使用する必要があります.
上記のコードは、厳密にはSCRIPTのTYPE属性をアプリケーション/javascriptに設定する必要がありますが、IEはこれをサポートしていないため、普段はtext/javascriptと書くかtypeを直接削除しなければなりません.また、SCRIPT要素のコメント行//を見ると、ブラウザはXHTMLラベルに解析されません.
Deferプロパティ
SCRIPT要素で宣言されたコードは、ページのロード時に実行されます.唯一の例外は、SCRIPT要素にdeferプロパティを追加することです.deferプロパティはブラウザにHTMLドキュメントをロードしてからJSコードを実行するように伝えますが、このプロパティはIEでしか使用できません.
外部スクリプトの接続
外部スクリプトを理解するには、SRCプロパティをSCRIPTで簡単に使用すればいいだけです.個別のJSファイルを使用するメリットは、キャッシュできることです.また、CDATAの問題も心配する必要はありません.
JavaScript必須
DOMを続ける前に、JavaScriptの核心的な必須知識を復習してみましょう.まだ知らないなら、大丈夫です.この章では少し時間をかけて振り返ります.
JavaScriptには、Number,String,Boolean,Object,Undefind and Nullといういくつかのデータ型があります.
一方通行の注釈は二重スラッシュ//を使用し、二重スラッシュの後ろのすべての文字は注釈され、複数行は/*と*/で囲まれていることに注意してください.
Number
JavaScriptではすべてのNumberが浮動小数点型で、数値変数を宣言するときは引用符を使用しないでください.
String
JavaScriptで文字列を宣言するのはとても簡単で、他の言語と同じように、JSでは一重引用符や二重引用符を使ってもいいです.
Boolean
ブールタイプは条件判断に使用され、ブールタイプはtrueとfalseの2つの値しかありません.論理オペレータを使用した比較は、ブール値を返します.
===比較オペレータでもあり、数値だけでなくタイプも比較されます.
Function
関数は特殊なオブジェクトです.
Array
配列も特殊なオブジェクトです.値(またはオブジェクト)が含まれています.これらのデータにアクセスするには、数値インデックスを使用する必要があります.
Object
オブジェクトはkey-valueの集合であり、配列と似ています.唯一の違いは、データごとに名前を定義できることです.
IF/Else文
JSで最も多く使われている文は条件文です.
JavaScriptオペレータ
このページにアクセスして、すべてのJSオペレータを表示することをお勧めします.ここでは、いくつかの例を示します.
Loopサイクル
Loopループは配列やオブジェクトのすべてのメンバーを巡るときに便利で、JavaScriptで最も多く使われているのはFORとWHILE文です.
DOM本文
DOMノードへのアクセス
例として、HTMLにはテキストと無秩序なリストが含まれています.
上記の例では、getElementById DOMメソッドを使用してp段落にアクセスし、SCRIPTに次のコードを追加します.
変数introParagraphは現在、DOMノードに参照されています.コンテンツやプロパティをクエリーしたり、他の操作を削除したり、クローンしたり、DOMツリーの他のノードに移動したりすることができます.
ドキュメント上の任意の内容は、JavaScriptとDOM APIを使用してアクセスできます.同様に、上記の無秩序リストにもアクセスできます.唯一の問題は、この要素にID属性がないことです.IDであれば同じ方法を使用するか、次のgetElementsByTagName方式を使用することができます.
getElementsByTagName
getElementsByTagNameメソッドはノードの集合を返します.配列と似ていてもlengthプロパティがあります.重要な特性はliveです.この要素に新しいli要素を追加すると、この集合が自動的に更新され、配列タイプにアクセスできるようになります.0から始めます.
次の例では、DOMが取得した知識をより明確に示します.
DOMシャトル
「シャトル」という言葉は主にDOMを通じてノードを検索することを記述するために使用され、DOM APIは多くのノード属性を提供し、ノードを上または下に検索します.
すべてのノードにはこれらのプロパティがあり、関連するnodeノードにアクセスできます. Node.childNodes:単一要素の下にあるすべての直接サブノード要素にアクセスします.ループ可能なクラス配列オブジェクトです.このノードセットは、textノードや他の要素ノードなど、異なるタイプのサブノードを保護することができる. Node.firstChild:'childNodes'配列の最初の項目('Element.childNodes[0]')と同じ効果で、ショートカットのみです. Node.LastChild:'childNodes'配列の最後の項目('Element.childNodes[Element.childNodes.length-1])と同じ効果で、ショートカットのみです.shortcut. Node.parentNode:現在のノードの親ノードにアクセスします.親ノードは1つしかありません.祖先ノードは「Node.parentNode.parentNode'の形式でアクセスします. Node.nextSibling:DOMツリー上の現在のノードと同じレベルの次のノードにアクセスします. Node.previousSibling:DOMツリー上の現在のノードと同じレベルの前のノードにアクセスします.
この図を通して、理解するのはずっと簡単ですが、非常に重要な知識点があります:それは要素の間にスペースがあることができなくて、もしulとliの間にスペースがあるならば、内容が空のtext nodeノードだと思われて、このようにul.childNodes[0]は最初のli要素ではありません.したがって、次のノードもそうではありません.間に空行のノードがあるため、一般的にこのような場合、すべてのサブノードを遍歴してnodeTypeタイプ、1は要素、2は属性、3はtextノードと判断する必要があります.詳細なtypeタイプは、このアドレスを使用できます.
まとめ
オリジナルのDOMメソッドとプロパティは、日常的な応用に十分です.この章では、いくつかの例を挙げます.次の章では、ブラウザイベントモデルも含めて、より多くの例を挙げます.
同期と推奨
この文書はディレクトリインデックスに同期されています:JavaScriptシリーズの詳細な理解
JavaScriptシリーズの文章を深く理解して、オリジナル、翻訳、転載などの各タイプの文章を含んで、もしあなたに役に立つならば、おじさんに書く動力を推薦して支持してください.
DOM(Document Object Model、ドキュメントオブジェクトモデル)は、JavaScriptとのコンテンツインタラクションによるAPIである.JavascriptとDOMは一般的に全体としてよく使われています.Javascriptは通常DOM操作とインタラクションに使用されるからです.
主な内容:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-series-lesson-1/
DOMについては、いくつかの知識に注意する必要があります:1.Windowsオブジェクトはグローバルオブジェクトとして、つまりWindowsを通じてグローバルオブジェクトにアクセスできます.
2.DOMは、nodeノードを介して構成されたWebドキュメントの階層を作成します.ここでは、いくつかのDOM nodeタイプがあります.最も重要なのは、Element、Text、Documentです.
3.各エンジンはDOM規格の実装に対して少し異なる.例えば、Firefoxブラウザが使用するGeckoエンジンは良好な実装(W 3 C仕様を完全に遵守していないにもかかわらず)を持っているが、IEブラウザが使用するTridentエンジンの実装は不完全でバグもあり、開発者に多くの問題をもたらしている.
Firefoxを使用している場合は、すぐにFirebugプラグインをダウンロードすることをお勧めします.DOM構造を理解するのに役立ちます.
Web上のJavaScript
Script要素
WebサイトのページでJavaScriptを使用する場合は、SCRIPT要素を使用する必要があります.
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JavaScript!title>
head>
<body>
<script type="text/javascript">
//
// ]]>
script>
body>
html>
上記のコードは、厳密にはSCRIPTのTYPE属性をアプリケーション/javascriptに設定する必要がありますが、IEはこれをサポートしていないため、普段はtext/javascriptと書くかtypeを直接削除しなければなりません.また、SCRIPT要素のコメント行//を見ると、ブラウザはXHTMLラベルに解析されません.
Deferプロパティ
SCRIPT要素で宣言されたコードは、ページのロード時に実行されます.唯一の例外は、SCRIPT要素にdeferプロパティを追加することです.deferプロパティはブラウザにHTMLドキュメントをロードしてからJSコードを実行するように伝えますが、このプロパティはIEでしか使用できません.
外部スクリプトの接続
外部スクリプトを理解するには、SRCプロパティをSCRIPTで簡単に使用すればいいだけです.個別のJSファイルを使用するメリットは、キャッシュできることです.また、CDATAの問題も心配する必要はありません.
<script type="text/javascript" src="my-script.js">script>
JavaScript必須
DOMを続ける前に、JavaScriptの核心的な必須知識を復習してみましょう.まだ知らないなら、大丈夫です.この章では少し時間をかけて振り返ります.
JavaScriptには、Number,String,Boolean,Object,Undefind and Nullといういくつかのデータ型があります.
一方通行の注釈は二重スラッシュ//を使用し、二重スラッシュの後ろのすべての文字は注釈され、複数行は/*と*/で囲まれていることに注意してください.
Number
JavaScriptではすべてのNumberが浮動小数点型で、数値変数を宣言するときは引用符を使用しないでください.
// : var
var leftSide = 100;
var topSide = 50;
var areaOfRectangle = leftSide * topSide; // = 5000
String
JavaScriptで文字列を宣言するのはとても簡単で、他の言語と同じように、JSでは一重引用符や二重引用符を使ってもいいです.
var firstPart = 'Hello';
var secondPart = 'World!';
var allOfIt = firstPart + ' ' + secondPart; // Hello World!
// + 。
Boolean
ブールタイプは条件判断に使用され、ブールタイプはtrueとfalseの2つの値しかありません.論理オペレータを使用した比較は、ブール値を返します.
5 === (3 + 2); // = true
//
var veryTired = true;
//
if (veryTired) {
//
}
===比較オペレータでもあり、数値だけでなくタイプも比較されます.
Function
関数は特殊なオブジェクトです.
// function
function myFunctionName(arg1, arg2) {
//
}
//
function (arg1, arg2) {
// Function code goes here.
}
// ,
//
myFunctionName(); //
myFunctionName('foo', 'bar'); //
//
(function () {
//
})();
Array
配列も特殊なオブジェクトです.値(またはオブジェクト)が含まれています.これらのデータにアクセスするには、数値インデックスを使用する必要があります.
// 2
// :
var fruit = ['apple', 'lemon', 'banana'];
// Array :
var fruit = new Array('apple', 'lemon', 'banana');
fruit[0]; // 1 (apple)
fruit[1]; // 2 (lemon)
fruit[2]; // 3 (banana)
Object
オブジェクトはkey-valueの集合であり、配列と似ています.唯一の違いは、データごとに名前を定義できることです.
// 2 Object
// ( )
var profile = {
name: 'Bob',
age: 99,
job: 'Freelance Hitman'
};
// Object
var profile = new Object();
profile.name = 'Bob';
profile.age = 99;
profile.job = 'Freelance Hitman';
IF/Else文
JSで最も多く使われている文は条件文です.
var legalDrinkingAge = 21;
var yourAge = 29;
if ( yourAge >= legalDrinkingAge ) {
alert('You can drink.');
} else {
alert('Sorry, you cannot drink.');
JavaScriptオペレータ
このページにアクセスして、すべてのJSオペレータを表示することをお勧めします.ここでは、いくつかの例を示します.
//
var someMaths = 2 + 3 + 4 - 10 * 100 / 2;
//
if ( 2 == (5 - 3 ) { /* */ } // ==
//
if ( 2 != (5 - 3 ) { /* */ }
// ( )
2 === 2 // 2 == 2
2 !== 3 // 2 != 3
// :
var numberOfFruit = 9;
numberOfFruit -= 2; // "numberOfFruit = numberOfFruit - 2"
numberOfFruit += 2; // "numberOfFruit = numberOfFruit + 2"
Loopサイクル
Loopループは配列やオブジェクトのすべてのメンバーを巡るときに便利で、JavaScriptで最も多く使われているのはFORとWHILE文です.
var envatoTutSites = ['NETTUTS', 'PSDTUTS', 'AUDIOTUTS', 'AETUTS', 'VECTORTUTS'];
// WHILE
var counter = 0;
var lengthOfArray = envatoTutSites.length;
while (counter < lengthOfArray) {
alert(envatoTutSites[counter]);
counter++; // counter += 1;
}
// FOR
// i ,
for (var i = 0, length = envatoTutSites.length; i < length; i++) {
alert(envatoTutSites[i]);
}
DOM本文
DOMノードへのアクセス
例として、HTMLにはテキストと無秩序なリストが含まれています.
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JavaScript!title>
head>
<body>
<p id="intro">My first paragraph...p>
<ul>
<li>List item 1li>
<li>List item 1li>
<li>List item 1li>
<li>List item 1li>
<li>List item 1li>
ul>
<script type="text/javascript">
//
// ]]>
script>
body>
html>
上記の例では、getElementById DOMメソッドを使用してp段落にアクセスし、SCRIPTに次のコードを追加します.
var introParagraph = document.getElementById('intro');
// DOM , DOM
変数introParagraphは現在、DOMノードに参照されています.コンテンツやプロパティをクエリーしたり、他の操作を削除したり、クローンしたり、DOMツリーの他のノードに移動したりすることができます.
ドキュメント上の任意の内容は、JavaScriptとDOM APIを使用してアクセスできます.同様に、上記の無秩序リストにもアクセスできます.唯一の問題は、この要素にID属性がないことです.IDであれば同じ方法を使用するか、次のgetElementsByTagName方式を使用することができます.
var allUnorderedLists = document.getElementsByTagName('ul');
// 'getElementsByTagName'
// -
getElementsByTagName
getElementsByTagNameメソッドはノードの集合を返します.配列と似ていてもlengthプロパティがあります.重要な特性はliveです.この要素に新しいli要素を追加すると、この集合が自動的に更新され、配列タイプにアクセスできるようになります.0から始めます.
// : [0]
var unorderedList = document.getElementsByTagName('ul')[0];
// li :
var allListItems = unorderedList.getElementsByTagName('li');
//
for (var i = 0, length = allListItems.length; i < length; i++) {
// text
alert(allListItems[i].firstChild.data);
}
次の例では、DOMが取得した知識をより明確に示します.
DOMシャトル
「シャトル」という言葉は主にDOMを通じてノードを検索することを記述するために使用され、DOM APIは多くのノード属性を提供し、ノードを上または下に検索します.
すべてのノードにはこれらのプロパティがあり、関連するnodeノードにアクセスできます.
この図を通して、理解するのはずっと簡単ですが、非常に重要な知識点があります:それは要素の間にスペースがあることができなくて、もしulとliの間にスペースがあるならば、内容が空のtext nodeノードだと思われて、このようにul.childNodes[0]は最初のli要素ではありません.したがって、次のノードもそうではありません.間に空行のノードがあるため、一般的にこのような場合、すべてのサブノードを遍歴してnodeTypeタイプ、1は要素、2は属性、3はtextノードと判断する必要があります.詳細なtypeタイプは、このアドレスを使用できます.
Node.ELEMENT_NODE == 1
Node.ATTRIBUTE_NODE == 2
Node.TEXT_NODE == 3
Node.CDATA_SECTION_NODE == 4
Node.ENTITY_REFERENCE_NODE == 5
Node.ENTITY_NODE == 6
Node.PROCESSING_INSTRUCTION_NODE == 7
Node.COMMENT_NODE == 8
Node.DOCUMENT_NODE == 9
Node.DOCUMENT_TYPE_NODE == 10
Node.DOCUMENT_FRAGMENT_NODE == 11
Node.NOTATION_NODE == 12
まとめ
オリジナルのDOMメソッドとプロパティは、日常的な応用に十分です.この章では、いくつかの例を挙げます.次の章では、ブラウザイベントモデルも含めて、より多くの例を挙げます.
同期と推奨
この文書はディレクトリインデックスに同期されています:JavaScriptシリーズの詳細な理解
JavaScriptシリーズの文章を深く理解して、オリジナル、翻訳、転載などの各タイプの文章を含んで、もしあなたに役に立つならば、おじさんに書く動力を推薦して支持してください.