Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.とエラーが出る。
quetySeletorallで取得した配列がDOMツリー上のノードでないのでこのエラーが出るらしいのですが、初心者なのでよくわかりません。
https://tridentwebdesign.blog.fc2.com/blog-entry-578.html
おそらくノードとはDOMツリー上の要素などのことを指すのだと思いますが、受け取った配列のクラス要素はこのノードではないのですか?
それならいったい何なのでしょうか?
これをノードかする方法も教えてください。
作成中のソース。最終的にはこのクラスの要素すべてを一番下にもっていきたい
document.querySelector('#js-move-bottom').addEventListener('click', function() { var parent = document.querySelectorAll('.serp-wrap'); var mysite = document.querySelectorAll('.serp--middle'); parent[0].appendChild(mysite); });
おそらくforなどで要素の個数分繰り返すしかないですよね。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
たとえばこう
CSS
1.aqua{background-Color:aqua;} 2.lime{background-Color:lime;} 3.yellow{background-Color:yellow;}
javascript
1window.addEventListener('DOMContentLoaded', function(e){ 2 document.querySelector('#js-move-bottom').addEventListener('click', function() { 3 var parent = document.querySelectorAll('.serp-wrap'); 4 var mysite = document.querySelectorAll('.serp--middle'); 5 Array.prototype.forEach.call(mysite,function(x){parent[0].appendChild(x);}); 6 }); 7});
HTML
1<input type="button" id="js-move-bottom" value="test"> 2<div class="aqua">0 3<div class="serp--middle">a</div> 4<div class="serp--middle">b</div> 5<div class="serp--middle">c</div> 6</div> 7<div class="serp-wrap lime">1</div> 8<div class="serp-wrap yellow">2</div>
移動ではなくコピー
javascript
1<style> 2.aqua{background-Color:aqua;} 3.lime{background-Color:lime;} 4.yellow{background-Color:yellow;} 5</style> 6<script> 7window.addEventListener('DOMContentLoaded', function(e){ 8 document.querySelector('#js-move-bottom').addEventListener('click', function() { 9 var parent = document.querySelectorAll('.serp-wrap'); 10 var mysite = document.querySelectorAll('.serp--middle'); 11 Array.prototype.forEach.call(mysite,function(x){ 12 Array.prototype.forEach.call(parent,function(y){ 13 y.appendChild(x.cloneNode(true)); 14 }); 15 }); 16 }); 17}); 18</script> 19<input type="button" id="js-move-bottom" value="test"> 20<div class="aqua">0 21<div class="serp--middle">a</div> 22<div class="serp--middle">b</div> 23<div class="serp--middle">c</div> 24</div> 25<div class="serp-wrap lime">1</div> 26<div class="serp-wrap yellow">2</div>
※一部修正
グループごとにbを下げる
javascript
1<style> 2.aqua{background-Color:aqua;} 3.lime{background-Color:lime;} 4.yellow{background-Color:yellow;} 5</style> 6<script> 7window.addEventListener('DOMContentLoaded', function(e){ 8 document.querySelector('#js-move-bottom').addEventListener('click', function() { 9 var mysite_b = document.querySelectorAll('.serp--middle-b'); 10 Array.prototype.forEach.call(mysite_b,function(x){ 11 x.parentNode.appendChild(x); 12 }); 13 }); 14}); 15</script> 16<input type="button" id="js-move-bottom" value="test"> 17<div class="aqua">0 18<div class="serp--middle-a">a</div> 19<div class="serp--middle-b">b1</div> 20<div class="serp--middle-b">b2</div> 21<div class="serp--middle-c">c</div> 22</div> 23 24<div class="lime">1 25<div class="serp--middle-b">b1</div> 26<div class="serp--middle-a">a</div> 27<div class="serp--middle-b">b2</div> 28<div class="serp--middle-c">c</div> 29</div> 30 31<div class="yellow">2 32<div class="serp--middle-a">a</div> 33<div class="serp--middle-b">b</div> 34<div class="serp--middle-c">c</div> 35</div>
投稿2018/03/29 06:25
編集2018/03/29 07:31総合スコア114883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/29 06:53
2018/03/29 07:03
退会済みユーザー
2018/03/29 07:20
2018/03/29 07:32
退会済みユーザー
2018/03/29 07:45
0
document.querySelectorAll
メソッドは(HTMLElement
とかの)オブジェクトの配列っぽい)NodeList
オブジェクトを返します.
一方appendChild
メソッドは引数としてNode
(HTMLElement
)オブジェクトを要求します.
従って, NodeList
の中身のHTMLElement
群をappendChild
したいのであれば, ループで一つずつHTMLElement
を追加して下さい.
NOTE:
当初HTMLCollection
としていましたが, 正しくはNodeList
でした.
投稿2018/03/29 06:21
編集2018/03/29 12:15総合スコア4756
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/29 12:11
2018/03/29 12:12
2018/03/29 12:17
2018/03/29 13:00
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.とエラーが出る。