js-DOM 開発者として、いくつかの DOM メソッドを知っておく必要があります。
1、ノードを作成します。
createElement():
var a = document.createElement(“p”);
要素ノードを作成するため、nodeType は 1 になります。
a.nodeName は p を返します。
createElement() メソッドによって作成された新しい要素ノードはドキュメントに自動的に追加されません。これは、ドキュメントにまだ追加されていないことを意味します。自由な状態で。したがって、nodeParent 属性もありません。
ドキュメントに追加する場合は、appendChild() メソッド、insertBefore() メソッド、または replaceChild() メソッドを使用できます。もちろん、前の例では、insertAfter() メソッドを自分で作成しました。
例:
var a = document.createElement(“p”);
document.body.appendChild(a);
注: appendChild() はデフォルトでドキュメントの最後に追加されます。つまり、lastChild 子ノードです。
どこかに追加したい場合は、insertBefore() を使用できます。
要素を挿入する前に要素に属性を追加する場合。
var a = document.createElement("p");
a.setAttribute("title","my demo");
document.body.appendChild(a); 🎜 >
createTextNode():
var b = document.createTextNode(“my demo”);
テキスト ノードを作成するため、nodeType は 3 になります。
b.nodeName は #text を返します。
createElement() と同様に、createTextNode() で作成されたノードはドキュメントに自動的に追加されません。 appendChild() メソッド、insertBefore() メソッド、または replaceChild() メソッドを使用する必要があります。
これは createElement() と組み合わせてよく使用されますが、その理由を知っていますか? (要素ノード、テキスト ノード)
var mes = document.createTextNode(“hello world”);
var container = document.createElement(“p”);
container.appendChild(mes) ;
document.body.appendChild(container);
2, ノードをコピーします。
cloneNode(boolean) :
パラメータが 1 つあります。
var mes = document.createTextNode("hello world");
var container = document.createElement("p");
container.appendChild(mes); container);
var newpara =container.cloneNode(true);//true と false の違い
document.body.appendChild(newpara);
注:
true: < p> ;aaaa
クローン。
false:
のみを複製し、内部のテキストは複製しません。
自分でサンプルを作成し、firebug を使用してそれを確認することができます。
createTextNode() などのクローン作成後の新しいノードは、ドキュメントに自動的に挿入されません。 AppendChild() は必須です。
別の注意: クローン作成後に ID が同じ場合は、setAttribute(“id”, “another_id “)
を使用して新しいノードの ID を変更することを忘れないでください。
3, ノードを挿入します。
appendChild():
要素に子ノードを追加し、最後に新しいノードを挿入します。
varcontainer = document.createElement("p");
var t = document.createTextNode("cssrain");
container.appendChild(t); );
これは、createElement()、createTextNode()、cloneNode() と組み合わせてよく使用されます。
さらに、appendChild() を使用すると、新しい要素を追加するだけでなく、ドキュメント内の既存の要素を移動することもできます。
以下の例を見てください:
msg
content
p id="aaa">aaaaaaaa
<script> <br>var mes = document.getElementById("msg"); <br>container.appendChild(mes); <br></script>
//コンテンツの後ろに msg が配置されていることがわかりました。
Js の内部処理方法:
まずドキュメントから ID msg を持つものを削除し、コンテンツの最後のノードとしてコンテンツの後ろに挿入します。
結果は次のようになります。
content
msg
aaaaaaaa
insertBefore() :
名前が示すように、ターゲット ノードの前に新しいノードを挿入します。
Element.insertBefore( newNode , targerNode );
2 番目のパラメータが省略されている場合、デフォルトでドキュメントの末尾に追加されます。これは appendChild と同等です。 ();
insertBefore() がどのように使用されるかを見てみましょう:
1111
msg
テスト
/p>
🎜><script> <br>var msg = document.getElementById("msg"); <br>var aaa = document.getElementById("aaa"); ; <br>test.insertBefore( msg , aaa ); <br></script>
// aaa の前に msg の ID が挿入されていることがわかりました。
Jsの内部処理方法はappendChild()と同様です。
4, ノードを削除します。
removeChild() :
a
;p id="b">b
c
<script> <br>var msg = document.getElementById("cssrain"); <br> msg.removeChild(b); </script>
削除するノードの親ノードがわからない場合はどうすればよいですか? parentNode 属性を使用できます。
例:
a
p id="b">b
🎜 ><script> <br>var b = document.getElementById("b"); <br>c.removeChild(b); 🎜 ><br>注: ノードをある場所から別の場所に移動する場合、removeChild() を使用する必要はありません。 <br>前の appendChild() と insertBefore() を使用できます。最初にノードが自動的に削除され、次に指定した場所に移動されます。 , <br><br><br>5、ノードを交換します。 <br>Element.repalceChild( newNode , oldNode ); <br>OldNode は Element の子ノードである必要があります。 <br><body> <br> <p id="cssrain"> <br> <p id="a">/p> >b </p> <br> <p id="c">c </p> <br> </body> <br>var cssrain = document.getElementById("cssrain"); <br>var msg = document.getElementById("b"); <br>var para = document.createElement("p"); replaceChild( para , msg ); <br></script>
6, 属性ノードを設定/取得します。
setAttribute();//
を設定します。 例:
var a = document.createElement(“p”);
a.setAttribute(“title”,”my demo”);以前に title 属性があったかどうかに関係なく、将来の値は私のデモです。
getAttribute();//
の例:
var a =document.getElementById(“cssrain”);
var b = a.getAttribute(“title”); >取得時に属性が存在しない場合は空を返します。ie と ff の戻り値が異なることに注意してください。
リターンは異なりますが、1 つの方法で判断できます。
if(a.getAttribute(“title”)){ }
7, ノードを見つけます。
getElementById();
nodeName、nodeType、parentNode、ChildNodes などのプロパティを持つオブジェクトを返します。
getElementsByTagName() は、タグ名のすべての要素を検索します。
コレクションを返します。ループを使用して各オブジェクトを取り出すことができます。このオブジェクトには、nodeName、nodeType、parentNode、ChildNodes などのプロパティがあります。
例:
var ps = document.getElementsByTagName(“p”);
for(var i=0; i
ps[i].setAttribute(“タイトル","こんにちは");
//以下も使用できます: ps.item(i).setAttribute("title","hello");
}
hasChildNodes:
名前でわかります、要素に子ノードがあるかどうかの判断です。
ブール型を返します。
テキスト ノードと属性ノードは子ノードを持つことができないため、その hasChildNodes は常に false を返します。
hasChildNodes は、childNodes と一緒に使用されることがよくあります。
例:
a
p id="b">b
🎜 ><script> <br>var ps = document.getElementById("cssrain") <br>if(ps.hasChildNodes){ <br> アラート( ps.childNodes.length ) <br>} <br>; ; /script> <br><br>8、DOM 属性: <br>nodeName 属性: ノードの名前。 <br>ノードが要素ノードの場合は、要素の名前を返します。このとき、tagName属性に相当します。 <br>例: <br><p>aaaa</p> : p を返します。 <br>属性ノードの場合、nodeName はこの属性の名前を返します。 <br>テキスト ノードの場合、nodeName は #text 文字列を返します。 <br><br>もう 1 つ言いたいのは、nodeName 属性は読み取り専用属性であり、(書き込み) 設定することはできません。<br><br>nodeType 属性: このノードのタイプを表す整数を返します。 <br>私たちは一般的に 3 つのタイプを使用します: <br>nodeType == 1 : 要素ノード <br>nodeType == 2 : 属性ノード <br>nodeType == 3 : テキストノード <br> 覚えておきたい場合は、上記を覚えておいてください。順序は前から後ろと考えることができます。 <br>例: <p title="cssrain" >test</p> 前から後ろに読むと、最初に要素ノード、次に属性ノード、最後にテキスト ノードがあることがわかります。覚えておいてください。nodeType はどのような型を表しますか? <br><br>nodeType 属性は、間違ったノード タイプで間違った操作が実行されないようにするために、if と組み合わせて使用されることがよくあります。 <br>例: <br>function cs_demo(mynode){ <br> if(mynode.nodeType == 1){ <br> mynode.setAttribute("title","demo"); > } <br> コードの説明: まず、mynode の nodeType 属性をチェックして、それが表すノードが実際に要素ノードであることを確認します。 <br>nodeName 属性と同様、これも読み取り専用属性であり、設定 (書き込み) できません。 <br><br><br><br>nodeValue 属性: このノードの値である文字列を返します。 <br>ノードが要素ノードの場合は null が返されます。(以下の注) <br>属性ノードの場合は、nodeValue はこの属性の値を返します。 <br>テキスト ノードの場合、nodeValue はこのテキスト ノードのコンテンツを返します。 <br>例: <br><p id="c">aaaaaaaaaaaaaa</p> <br><SCRIPT LANGUAGE="JavaScript"> var c= document.getElementById("c" ) ; <br>alert( c.nodeValue );//Return null <br></SCRIPT>
nodeValue は読み取りおよび書き込みが可能なプロパティです。ただし、要素ノードの値を設定することはできません。
以下の例を見てください:
aaaaaaaaaaaaaa
もちろん、正しい動作を保証するために、コードを追加できます:
< ;p id="c ">aaaaaaaaaaaaa
//It can be seen that if you want to set the element node, you cannot set it directly, but you must first use firstChild or lastChild, etc. and then set the nodeValue.
nodeValue is generally only used to set the value of the text node. If you want to refresh the value of an attribute node, you generally use setAttribute().
childNodes attribute: Returns an array consisting of child nodes of the element node.
Since text nodes and attribute nodes can no longer contain any child nodes,
so their childNodes property always returns an empty array.
You can use the hasChildNodes method, which is used to determine whether an element has child nodes.
or if (container.childNodes.length < 1);
childNodes is also a read-only attribute. If you want to add nodes, you can use appendChild() or insertBefore().
To delete nodes, you can use removeChild(); After the operation, the childNodes attribute will be automatically refreshed.
firstChild attribute:
Since text nodes and attribute nodes can no longer contain any child nodes,
so their firstChild attribute always returns an empty array. If there are no child nodes, null will be returned;
node.firstChild is equivalent to node.childNodes[0];
firstChild attribute is a read-only attribute.
lastChild attribute:
Since text nodes and attribute nodes can no longer contain any child nodes,
so their lastChild attribute always returns an empty array. If there are no child nodes, null will be returned;
node.lastChild is equivalent to node.childNodes[ node.childNodes.length - 1] ;
lastChild attribute is a read-only attribute.
nextSibling attribute:
Returns the next sibling node of the target node.
If there is no node behind the target node that belongs to the same parent node, nextSibling will return null;
nextSibling property is a read-only property.
previousSibling attribute:
Returns the previous sibling node of the target node.
If there is no node in front of the target node that belongs to the same parent node, previousSibling will return null;
the previousSibling property is a read-only property.
parentNode attribute:
Note: The node returned by the parentNode attribute is always an element node, because only element nodes may have child nodes.
Of course there is an exception:
document node, which has no parent node. So the parentNode property of the document node will return null;
parentNode property is a read-only property.
Okay, that’s it for the common attributes and methods of DOM. Understand the use of these methods.
I believe that everyone’s DOM programming technology will be greatly improved.