• ベストアンサー

js 親ノード

javascriptの Node.appendChild()の使い方に親ノード、子ノードとあるのですが これは親要素、子要素とは違うのですか? 以下引用 Node.appendChild() メソッドは、特定の親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます(他のノードに追加する前にそのノードを親ノードから削除する必要はありません)。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

同じです。

関連するQ&A

  • あるノードリストに、特定の名前のノードが存在するかどうか調べたい

    ある MSXML2.IXMLDOMNodeList に、特定の名前のノードが存在するかどうか調べたいのですが、 どのようにすればよいでしょうか。 全てのノードを調査すれば私の知識でもできないことはないのですが、 便利なメソッド等はないかと思いまして。。。 (「haschildnodes」って、「特定の」子ノードの存在は調べられませんよね・・・?) なお、VB.NETでコーディングしています。 ご回答よろしくお願いします。

    • 締切済み
    • XML
  • XML::XPath -- 追加したノードが見付からない

    XMLのテンプレートを既存のXMLに追加したのですが、 その後 findnodes() で検索しても合致しません。 XML::XPath::Node::Element->new() を使って作成したものは 合致してくれます。 XML::XPath::XMLParser でパースしたものを追加して findnodes() で合致させるにはどのようにしたらよいのでしょうか。 ------------------------------- use XML::XPath; #### 元のXML my $xmldata = <<EOM; <?xml version="1.0" encoding="UTF-8" ?> <list>   <item>orange</item>   <item>apple</item>   <item>lemon</item> </list> EOM ### 追加するXMLのテンプレート my $xmlappend = <<EOM;   <item>pine</item> EOM ## 追加先ノードを取り出す my $xml = XML::XPath->new( xml=>$xmldata ); my ($list) = $xml->findnodes('/list'); ## 追加用XMLを作成して追加 my $append = XML::XPath::XMLParser->new( xml=>$xmlappend )->parse; $list->appendChild( $append ); ## もういっこ追加。こちらはこの場で作る $newnode = XML::XPath::Node::Element->new('item'); $newtext = XML::XPath::Node::Text->new('banana'); $newnode->appendChild( $newtext ); $list->appendChild( $newnode ); ## 現状確認 → pine は入っていた print $list->toString."\n"; ## item一覧を取得 @nodes = $xml->findnodes('/list/item'); ## 一覧を出力 → 追加した pine が出力されない。 bananaはある。 map{ print $_->toString."\n" } @nodes;

    • ベストアンサー
    • Perl
  • createElementによるタグ追加作成

    ボタンが押された時にPタグの中に、H1タグを挿入されるhtmlを作成しました。 ですが、ボタンを押しても addH関数に処理が流れないみたいなのです。 なぜなのでしょうか・・・。 環境は、Win7・IE9です。 よろしくお願いします。 ===以下ソース=== <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>タグの追加</title> <script type="text/javascript"> <!-- function addH(){ alert("test"); /*(1)Pタグの要素ノードオブジェクト*/ var info = document.getElementById('info'); alert(info): /*(2)新たにH1タグの要素ノードを作成する*/ var h1Node = document.createElement('h1'); /*(3)新たにテキストノードを作成する*/ var textNode = document.createTextNode('こんにちは'); /*(4)作成したテキストノードをH1タグ要素の子要素として追加する*/ h1Node.appendChild(textNode); /*(1)Pタグに、完成したH1タグを追加する*/ info.appendChild(h1Node); } --> </script> </head> <body> <p id="info"></p> <input type="button" value="H1タグ追加" onClick="addH()"> </body> </html> ===ソースここまで===

  • ノードの削除

    removeAllChildren()を使って子ノードを削除させたのですが、上手く削除できません。削除はされているようなのですが、repaint()を使っても親ノードから伸びる線は消えているのですが、削除したはずのノードが残っている状態です。どうしたらよいのか分かりません。 教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • [C言語]単連結リストにおける着目ノードの操作

    http://www.bohyoh.com/Books/CalgoA/EX/ALGOEX0901.html 上の線形リストのプログラムにおいて、着目ノードを1個次にずらす操作と、1個前にずらす操作を追加したいのですが、単連結リストでは後者の実現は少しばかりややこしく、困っています。 おそらく先頭ノードから後続ノードへのポインタを辿って行って、着目ノードを探索すれば良いのでしょうが……。 尚、前者において着目ノードが末尾ノードだった場合、後者において着目ノードが先頭ノードだった場合は考えないものとします。 皆様にご教授頂けると幸いです。 /* 着目ノードを一個次のノードにする */ void NextCrnt(List *list) { if (list->crnt == NULL){ puts("着目要素はありません。"); } else { list->crnt = list->crnt->next; } }

  • List構造

    Listの尻にノードを追加する関数で困っています。 以下に、ソースの一部を掲載させていただきます。 typedef struct __node{ int data; struct __node *next; }Node; ... /*リストの尻にノードを追加する関数 * 引数: head. リストの先頭ノードのポインタ data. リストの尻に追加したいint型の変数*/ void Insert_Tail(Node *head, int data) { Node *ptr = head; if(ptr == NULL){ /*<ノードが存在しない時には追加されない>*/ /*領域の確保*/      head = (Node*)calloc(1,sizeof(Node)); /*データをセット*/ head->data = data; head->next = NULL; return ; }else{ /*<ノードが存在するときには正常に動作>*/ while(ptr->next != NULL){ ptr = ptr->next; } /*領域の確保*/ ptr->next = (Node*)calloc(1,sizeof(Node));      /*データのセット*/ ptr->next->data = data; ptr->next->next = NULL; } } コメントアウトにも書かせていただきましたが、ノードがすでに存在するときには、正常にノードの最後に追加してくれるのですが、ノードが存在しない時にはリストに追加してくれません。 どうかご指導、ご指摘の程お願いします。

  • VB2005 ツリービューに子ノードを追加

    VB2005 ExpressEditionにて開発しています。 フォームロード時にデータセットからツリービューにデータをセット しようとしています。 ルートノードには  Dim Node As TreeNode  Node = TreeView2.SelectedNode  TreeView2.Nodes.Add("追加したい名前") で追加できます。 子ノードを追加する時はどうしたらいいのでしょうか。 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • phpでxmlが動かない macOsXLion

    phpでxmlの練習をしてるんですが全く動作しません。なんででしょうか? コードを次に書きます。 <?php $doc = new DOMDocument; // DOMDocumentのインスタンス生成 $root = $doc->createElement("cars");  // root要素を作成する $doc->appendChild($root); // docの子としてrootを追加する $elm1 = $doc->createElement("car"); // car要素を作成する $root->appendChild($elm1); // car要素をrootの子として追加する $txt1 = $doc->createTextNode("スポーツカー"); // テキストノードを作成する $elm1->appendChild($txt1); // テキストノードをテキスト要素としてelm1の子として追加する $elm2 = $doc->createElement("car"); // car要素を作成する $root->appendChild($elm2); // rootの子としてcar要素を追加する $txt2 = $doc->createTextNode("トラック"); // テキストノードを作成する $elm2->appendChild(txt2); // elm2にtxt2を追加する print $doc->saveXML(); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • javaがわかりません。。。

    単方向リストをjavaで書きなさい。 MyListクラス   メソッドを実装 MyListAppクラス メソッドを実行 MyListに実装するメソッド void insertTail(MyList node):リストの最後へ新規データを追加 void insertHead(MyList node):リストの先頭へ新しいデータを追加 void show():現在のリストを表示する void insert(MyList node):リストの途中へ新規データを挿入 ※データが小さい順に並んでいるとして、新規データも小さい順になるような場所へ挿入できるようにする。 void delete(MyList node):リストからデータを1つ削除 ※指定されたデータを見つけ、最初に見つかったデータを削除できるしょうにする。見つからないときは、何もしない。 void deleteHead():先頭のノードを削除する void deleteTail():最後のノードを削除する という問題を解いています。 class MyList{ int data;     //データ MyList next = null; //次のノードへのポインタ MyList(int data){ //新しいノードの作成 this.data = data; } void insertTail(MyList node){ //リストの最後へ追加 MyList tmp = this; while(tmp.next != null){ tmp = tmp.next; } tmp.next = node; } void insertHead(MyList node){ //リストの先頭へ追加 node.next = this.next; this.next = node; } void insert(int head, MyList node){ //リストの途中へ新規データを挿入 MyList tmp = this; while(tmp != null){ if(tmp.data == head){ break; } tmp = tmp.next; } node.next = tmp.next; tmp.next = node; } void delete(int here, MyList node){ //リストからデータを1つ削除 MyList tmp = this; while(tmp != null){ if(tmp.data == here){ break; } tmp = tmp.next; } node = tmp.next; tmp.next = node.next; node.next = null; } void deleteHead(){ //先頭のノードを削除 MyList tmp = next; this.next = tmp.next; tmp.next = null; } void deleteTail(){ //最後のノードを削除 MyList tmp = this; while(tmp.next != null){ tmp = tmp.next; } tmp = null; } void show(){ MyList tmp = next; while(true){ System.out.print(tmp.data); if(tmp.next == null) break; tmp = tmp.next; } System.out.println(""); } } class MyListApp{ public static void main(String[] args){ MyList list = new MyList(0); //初期ダミー System.out.println("最後に追加"); list.insertTail(new MyList(1)); //最後に追加 list.show(); list.insertTail(new MyList(5)); list.show(); System.out.println(); System.out.println("先頭に追加"); list.insertHead(new MyList(8)); //先頭に追加 list.show(); list.insertHead(new MyList(9)); list.show(); System.out.println(); System.out.println("途中からデータを追加"); list.insert(1, new MyList(2)); //途中からデータの追加 list.show(); list.insert(2, new MyList(3)); list.show(); System.out.println(); System.out.println("リストからデータを削除"); list.delete(8, new MyList(1)); //リストからデータを削除 list.show(); System.out.println(); System.out.println("先頭のノードを削除"); list.deleteHead(); //先頭のノードを削除 list.show(); list.deleteHead(); list.show(); System.out.println(); System.out.println("最後のノードを削除"); list.deleteTail(); //最後のノードを削除 list.show(); list.deleteTail(); list.show(); } } ここまではできたのですが、どうしても最後のノード削除ができません。 どうしたらいいでしょうか。

    • ベストアンサー
    • Java
  • なぜこの関数で、先頭ノードの次に挿入できるのかわからない。

    柴田さんのC言語による「アルゴリズムとデータ構造」の中に出てくるハッシュ表に線形リストを用いてデータを挿入するチェイン法のプログラムでわからない処理があります。 ハッシュ表のバケット(リストの先頭ノードを持つポインタ)に対してデータを追加していきます。 絵を添付しようと思ったのですが、なぜか添付できなかったので、柴田さんの本をお持ちの方やご存知の方にご回答お願いします。 ハッシュ表の7のバケットには13で割った余りが7になる値を次々に挿入していきます。すでに、33と20が挿入されている状態です。そこに、13で割ったあまりがこれも7になるリストを挿入します。挿入するときは、イメージにあるように、バケットの次に挿入します。 この新しいノードを挿入する処理を行っているのは関数InsertNodeです。 /*引数にハッシュ表と追加するx(この場合46)をもらってくる。*/ int InsertNode(Hash *h,Data x) { /*ハッシュ値(データを13で割った余り)をkeyに設定する。hashはそういう仕様の関数です。*/ int key=hash(x.no); /*Node型とはハッシュ表からつながっているリストのノード同士をつないだり、ノード自体のデータを格納する構造体型です。任意のノードであるpにハッシュ表の先頭要素であるバケットを挿入しています。*/ Node *p = h->table[key]; /*tempは新しく設定するノードの入れ物です。*/ Node *temp; /*このループ処理により任意のノードpをデータがないところまで移動させます。この場合、20→33と伝って次のNULLまで行きます。これはすでにデータが登録済みかどうかをチェックするための処理です。たとえば20を関数InsertNodeの引数として持ってきたとすればメイン関数に1を返します。*/ while(p!=NULL) { if(p->data.no ==x.no) { return 1; } p=p->next; } /ここまで/ /*46は登録済みではないので、tempに新しい領域を設定します。もしも確保に失敗すればメイン関数に2を返します。*/ if((temp = (Node*)calloc(1,sizeof(Node)))==NULL) { return 2; } /*わからないのはこの処理です。*/ SetNode(temp,x,h->table[key]); h->table[key] = temp; /*ここまで*/ /*関数SetNodeの仕様としてはこの場合で言えば新しく挿入するノードtempに対して値46を設定する。それに加えて、次のノードに引数でもらってきたh->table[key]をさすようにするというものです。ところが私の解釈では、h->table[key]は先頭要素の値であり、挿入させてもらった絵のイメージとは違ってきてしまうと思うのです。SetNodeに渡す引数として、(temp,x,先頭の次の要素)でセットするのではないでしょうか。SetNodeの呼び出しの次の行で先頭要素であるバケットに新しく挿入する値46を挿入しておりますますわけがわからなくなってしまっています。*/ void SetNode(Node *n,Data x,Node *next) { n->data=x; n->next=next; } return 0; } ところが、柴田氏の本に書かれているように記述すると私のイメージどおりに動いているようです。つまり私の解釈は間違っていることになります。上記の処理を解説していただきたいです。お手数ですが、よろしくお願いいたします。

専門家に質問してみよう