この章では主に、新世代のブラウザでサポートされている W3C の第 1 レベル DOM について紹介します。それらがどのように機能するかについての一般的なアイデアを提供し、それらを使用して何ができるかについてのアイデアを提供します。
まず、DOM に関するいくつかの提案と DOM 設計の目的について説明し、次にノードとは何か、DOM ツリー内でノードを移動する方法について説明します。次は、特定のノードを取得する方法と、その値と属性を変更する方法です。最後に、DOM の最終目標は、独自の新しいノードを作成する方法です。
推奨事項
レベル 1DOM は、XML ドキュメントにアクセスするためのプログラミング言語を提供するために W3C によって開発されました。 XML ドキュメントの処理に使用する言語プログラムは、レベル 1DOM のメソッドと属性であれば関係ありません。 Perl、VBScript、JavaScript のいずれであっても、必要な値を読み取って変更できます。
ご想像のとおり、この段落では理想的な状況について説明していますが、相違点は依然として存在します (ブラウザーなど)。ただし、コンテンツのこの部分はまだ比較的小さいため、JavaScript で XML を処理する方法を学習することは、他の言語の学習にも役立ちます。
HTML は、ある程度、XML ドキュメントとみなすこともできます。ブラウザが対応するスクリプトを処理できる限り、レベル 1 DOM は HTML でも非常に適切に実行できます。
各 HTML タグのテキストと属性を読み取ったり、各タグとその内容を削除したり、サーバー上で変更を加えることなく、既存のドキュメントに新しいタグをリアルタイムで挿入したりすることができます。
XML の変更に関するあらゆる側面を設計の開始時に考慮する必要があるため、通常の Web エンジニアには決して使用できない方法がいくつかあります。たとえば、これを使用して HTML コメントを変更できますが、なぜこれを行う必要があるのかわかりません。 Web デザインでは必要のない DTD/Doctype コンテンツの DOM 処理もいくつかあるため、それを無視して日常のニーズに集中してください。
ノード
ドキュメント オブジェクト モデルは、ドキュメント内の複数の要素がどのように相互に関連しているかを示すモデルです。レベル 1 DOM では、すべてのオブジェクトがノードです。
これは次のとおりです。 a段落 p>
これは < ;B>段落
これは段落
の構造は次のようになります:
<P> ----------------<br><br> -------------- ALIGN<br><br> This is a <B> |<br> | right<br><br> paragraph
これは要素ノード、テキストノード、パラメータノードです。 HTML ページの 99% はこれらで構成されており、主なタスクはそれらをどのように配置するかです。もちろん、他にも多くのノードがありますが、ここでは省略します。
ご存知のとおり、p 要素には独自の親ノードもあります。これは通常ドキュメントですが、場合によっては DIV である場合もあります。したがって、ドキュメント全体は多くのノードで構成されるツリーとして見ることができ、これらのノードのほとんどには独自の子ノードがあります。
<BODY><br><br> |-------------------------------------<br><br> <P> ---------------- lots more nodes<br><br> -------------- ALIGN<br><br> This is a <B> |<br> | right<br><br> paragraph
これは 段落です< ;/B>
>
var x = document.getElementById('hereweare');
要素 B は x に格納されます。
document.getElementById('hereweare' ).firstChild.nodeValue='太字のテキスト';
コードは次のとおりです:
function test2(val) {
if (document.getElementById && document.createElement)
{
node = document.getElementById('hereweare').parentNode;
node.setAttribute('align',val);
}
创建和删除元素
修改元素固然有用,但是还是不如创建你需要的元素然后插入到现有的文档中。我可以很简单的在这个段落后面添加一个HR元素然后很简单的删除它。
创建元素使用下面的方法:
var x=document.createElemnt(‘HR')
这样HR就创建并且存储在x中。第二步就是把x插入到文档之中。我写了一个ID是inserthere的SPAN,我们就把它插入到这。所以我们使用appendChild()方法:
删除它稍稍有点麻烦。我先创建一个临时变量node来存储SPAN,然后我告诉他移除他的第一个子元素:
var node=document.getElementById(‘inserthere');
node.removeChild(node.childNode[0]);
同样的方法我们也可以创建一个新的元素然后添加在ID是hereweare的B元素上。
var x = document.createTextNode(' A new text node has been appended!');
document.getElementById('hereweare').appendChild(x);
你可以试一试,你会注意到用老的办法可能不会移除新加的文本,那是因为他们已经成为分离的两部分了: <B><br><br> ------------<br><br> paragraph A new text node<br> has been appended!
(可以通过normalize()来把他们合并,但是IE5不支持)
我不打算告诉你怎么移除它,自己练习会比较有收获
翻译地址:http://www.quirksmode.org/dom/intro.html
转载请保留以下信息
作者:北玉(tw:@rehawk)