国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

JavaScript が子ノードを取得する

すべての子ノードを取得する

Javascript では、children を通じてすべての子ノードを取得できます。

children は HTML ノードのみを返します。標準の DOM 屬性ではありませんが、ほぼすべてのブラウザでサポートされています。

構(gòu)文:

    nodeObject.children


このうち、nodeObjectはノードオブジェクト(要素ノード)であり、戻り値は全ての子ノードのコレクション(配列)となります。

注: IE では、子にコメント ノードが含まれます。

たとえば、id="demo" を持つノードのすべての子ノードを取得します。

document.getElementById("demo").children;

通常、nodeType 屬性を通じて選択できる要素ノードを取得する必要があります。nodeType==1 を持つノードです。要素ノードです。

次に、すべての要素サブノードを取得する関數(shù)をカスタマイズします:

var getChildNodes=function(ele){
   var childArr=ele.children,
         childArrTem=new Array();  //  臨時數(shù)組,用來存儲符合條件的節(jié)點
    for(var i=0,len=childArr.length;i<len;i++){
        if(childArr[i].nodeType==1){
            childArrTem.push(childArr[i]);  // push() 方法將節(jié)點添加到數(shù)組尾部
        }
    }
    return childArrTem;
}

例、id="demo" を持つノードのすべての要素サブノードを取得します:

<div id="demo">
    <!-- 這里是注釋 -->
    <div>子節(jié)點一</div>
    <div>子節(jié)點二</div>
    <div>子節(jié)點三</div>
</div>
<script type="text/javascript">
document.getElementById("demo").onclick=function(){
    var childArr=getChildNodes(this);
    alert("元素子節(jié)點的個數(shù)為:"+childArr.length);
}
</script>

次のデモを參照してください

QQ截圖20161013094100.png

さらに、W3C 仕様では、子ノードは childNodes を通じて取得されます。これは、HTML ノード、テキスト ノード、注釈ノードなど、指定された要素の子ノードのコレクションを返す標準屬性であり、より広範囲の屬性を持ちます。子よりもノード タイプ。

以下は、childNode に対するブラウザのサポートのリストです:

QQ截圖20161013094113.png

コードの互換性を改善し、個々のブラウザが子ノードまたは childNode をサポートしない狀況を避けるために、次のようにコードを書くことができます:

var childArr=ele.children || ele.childNodes

上記の getChildNodes () を変更します。 関數(shù)は少し変更されています:

var getChildNodes=function(ele){
   var childArr=ele.children || ele.childNodes,
         childArrTem=new Array();  //  臨時數(shù)組,用來存儲符合條件的節(jié)點
    for(var i=0,len=childArr.length;i<len;i++){
        if(childArr[i].nodeType==1){
            childArrTem.push(childArr[i]);
        }
    }
    return childArrTem;
}

最初の子ノードを取得します

Javascript では、firstChild を通じて最初の子ノードを取得できます。

構(gòu)文:

    nodeObject.firstChild


このうち、nodeObjectはノードオブジェクト(要素ノード)です。

IE8.0 以下のブラウザは、ノード間の空白ノード (スペース、キャリッジ リターン、Tab キー) を無視します。W3C 仕様に準拠するブラウザ (Chrome、FireFox、Safari など) は、これらの空白をノード処理として扱います。 。

たとえば、最初の子ノードを取得します:

<div id="demo">
    <div>子節(jié)點一</div>
    <div>子節(jié)點二</div>
    <div>子節(jié)點三</div>
</div>
<script type="text/javascript">
    document.getElementById("demo").onclick=function(){
        alert(
            "第一個子節(jié)點:"+this.firstChild+"\n"+
            "第一個子節(jié)點的類型是:"+this.firstChild.nodeType+"\n"+
            "第一個子節(jié)點的名稱是:"+this.firstChild.nodeName
        );
    }
</script>

サンプルデモ

QQ截圖20161013094214.png

IE8.0以下のブラウザでは、以下のように表示されます。
最初の子ノード:[object HTMLDivElement]
最初の子ノードの型:1
最初の子ノードの名前は:DIV

Chrome、Opera、Safari、FireFox では、次のように表示されます。
最初の子ノード: [オブジェクト テキスト]
最初の子ノードのタイプ: 3
最初の子ノードの名前: #text

ノード間の空白を削除する上記のコード:

<div id="demo"><div>子節(jié)點一</div><div>子節(jié)點二</div><div>子節(jié)點三</div></div>
<script type="text/javascript">
    document.getElementById("demo").onclick=function(){
        alert(
            "第一個子節(jié)點:"+this.firstChild+"\n"+
            "第一個子節(jié)點的類型是:"+this.firstChild.nodeType+"\n"+
            "第一個子節(jié)點的名稱是:"+this.firstChild.nodeName
        );
    }
</script>


デモの例

QQ截圖20161013094249.png

すべてのブラウザで、次のように表示されます:
最初の子ノード: [object HTMLDivElement]
子ノードのタイプ: 1
最初の子ノードの名前は次のとおりです: DIV

最後の子ノードを取得します

Javascript では、lastChild を通じて最後の子ノードを取得できます。

firstChild と同様に、IE8.0 以下のブラウザはノード間の空白ノード (スペース、キャリッジ リターン、Tab キー) を無視しますが、W3C 仕様に従うブラウザ (Chrome、FireFox、Safari など) は無視します。これらの空白は次のとおりです。テキストノードとして扱われます。

子ノードがあるかどうかを確認する

JavaScript では、hasChildNodes() メソッドを使用して子ノードがあるかどうかを確認できます。

構(gòu)文:

    nodeObject.hasChildNodes()


このうち、nodeObjectはノードオブジェクト(要素ノード)であり、戻り値はBoolean型です。

IE8.0 以下のブラウザは、ノード間の空白ノード (スペース、キャリッジ リターン、Tab キー) を無視します。W3C 仕様に準拠するブラウザ (Chrome、FireFox、Safari など) は、これらの空白をノード処理として扱います。 。

テキスト ノードと屬性ノードには子ノードを含めることができなくなりました。そのため、これら 2 種類のノードの ChildNodes() メソッドの戻り値は常に false になります。

hasChildNodes()の戻り値がfalseの場合、firstChildとlastChildの戻り値はnull(ノードが存在しない)、childrenとchildNodesの戻り値は空の??コレクション(配列長が0)となります。


學(xué)び続ける
||
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>子節(jié)點</title> <div id="demo"><div>子節(jié)點一</div><div>子節(jié)點二</div><div>子節(jié)點三</div></div> <script type="text/javascript"> document.getElementById("demo").onclick=function(){ alert( "第一個子節(jié)點:"+this.firstChild+"\n"+ "第一個子節(jié)點的類型是:"+this.firstChild.nodeType+"\n"+ "第一個子節(jié)點的名稱是:"+this.firstChild.nodeName ); } </script> </head> <body> </body> </html>