「D」はドキュメント (ドキュメント)
「O」はオブジェクト (オブジェクト) を表します オブジェクトの分類
window オブジェクト window オブジェクトはブラウザ ウィンドウ自体に対応し、通常、このオブジェクトのプロパティとメソッドを総称して BOM (Browse Object Model) と呼ばれます。BOM が提供します。 window.open や window.blur などのメソッド。さまざまなポップアップ ウィンドウやドロップダウン メニューで悪用されているほどです
"M" は "Model" の略です (モデル). DOM はドキュメントを表します ツリーのコード例 (数学的概念)
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8" /> <title>Shoping List<title> </head> <body> <h1>What to buy</h1> <p title="a gentle reminder">Don’t forget to buy this stuff.<p> <ul id="purchases"> <li> A tin of beans<li> <li class="sale">Cheese<li> <li class="sale important">Milk<li> </ul> <body> </html>代码中<html>相当于树根,即根元素。<head>和<body>属于下一个分支,位于同一层次且互不包含,属于兄弟关系。<head>元素有两个子元素<meta>和<title>(属于兄弟关系)<body>元素有三个子元素<p>、<h1>、<ul>(这三个属于兄弟关系。<ul>也是一个父元素,有三个子元素,他们都是<li>元素。
ドキュメントのさまざまな要素を家系図として想像できれば、DOM を同じ用語で説明できます。しかし、 「ノードツリー」
ノード (node) はネットワーク用語で、ネットワーク内の接続点を表します。ネットワーク。ネットワークはノードの集合です。 DOM にも同じことが当てはまります。ドキュメントはノードのコレクションです。
DOM のアトムは 要素ノード (要素ノード)
、、
上の例では、
というテキストが含まれています。これは テキスト ノードです。 (テキストノード)。
属性ノードは、要素のより具体的な説明を提供します。たとえば、ほとんどすべての要素には title 属性があり、この属性を使用して要素に含まれる内容を正確に説明できます。
属性ノード<p title="a gentle reminder">Don't forget to buy this stuff.<p>
3 つの関係.png
4, 4 CSS
JavaScript スクリプトと同様に、ドキュメントに CSS スタイルを埋め込むこともできます。 head> セクション (style> タグの間)。別のファイルに配置することもできます。 **HTML ファイル内で CSS ファイルを参照する形式:<link type="text/css" href="file.css" rel="stylesheet">
は、上記のコード
<p class="special">This pargraph has the special class<p><h2 class="special">So dose this headline</h2>
のスタイル シートで定義することも、次のように定義することもできます
special{font-style: italic;}
2)、id 属性 id 属性の目的は、Web ページ内の要素に一意の識別子を追加することです:
h2.special{text-transform: uppercase;}
スタイル シート定義
<ul id="purchases">
4, 5 要素の取得
#purchases{border:1px solid white;background-color:#333;color:#ccc;padding:1em;}
#purchases li{font-weight:bold;}
getElementById
を続ける必要があります。この 1 対の括弧には、 関数のパラメーターが含まれます。 document.getElementById(id) の getElementById メソッドにはパラメーターが 1 つだけあります: 取得する要素の id 属性の値 この id 属性は一重引用符または二重引用符で囲む必要があります。 。この docment.getElementById("purchases") の呼び出しは、オブジェクトを返します。このオブジェクトは、ドキュメント オブジェクトの一意の要素に対応します。その要素の HTLM id 属性値は、purchase です。結果はオブジェクト
2) getElementsByTagNameShoping List What to buy
Don’t forget to buy this stuff.
<ul id="purchases">
getElementsByTagName メソッドはオブジェクトの配列を返します。各オブジェクトはドキュメント内の指定されたタグを持つ要素に対応します。そのパラメータはタグの名前です: device.getElementByTagName(tag)
getElementsByTagName では、パラメータとしてワイルドカード文字を使用できます。ワイルドカード文字 (*) は引用符で囲む必要があります
。alert(document.getElementsByTagName("li").length);//显示文档里的列表元素个数为:3
Shoping List What to buy
Don’t forget to buy this stuff.
<ul id="purchases">
3) getElementByClassName
alert(document.getElementsByTagName("*").length);//可以知道文档里有多少个元素节点
var shopping=document.getElementById("purchases");var items=shopping.getElementsByTagName("*");//程序运行结果,items数组将只包含id属性值是purshase的元素清单的元素
document.getElementsByClassName("sale")
利用这种方法还可有查找那些带有多个类名的元素。多个类名之间用空格分开即可
alert(document.getElementsByClassName("important sale").length);//对话框显示1,表示只有一个元素匹配。类名的顺序不重要,就算元素还带有更多类名也没有关系。
也可以和getElementById组合使用
var shopping=document.getElementById("purchase"); var sales=shopping.getElementsByClassName("sale");sales数组中包含的就只是位于“purchases”列表中的带有“sale”类的元素。
getElementByClassName方法非常有用,但只有较新的浏览器才支持它。所以,需要使用已有的DOM方法来实现自己的getElementsByClassName。
function getElementsByClassName(node,classname){if (node.getElementsByClassName){//使用现有的方法return node.getElementsByTagName("*");for (var i=0; i<elems.length;i++){ if(elems[i].ClassName.indexof(classname)!= -1){results[results.length]=elems[i]; } }return results; }}