質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4792閲覧

【JavaScript】クリックする度に要素を移動したり元に戻したりしたい

tetutetutetu

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/03/29 07:53

編集2019/03/29 08:01

ボタンをクリックする度に
[#youso]の中身を[#idousaki]に移動したり、
元に戻したりしたいと思っています。

とりあえずは#yousoを#idousakiに複製し、
CSSで表示・非表示を切り替えてお茶を濁していますが、
複製ではなく移動をさせたいです。

<div id="idousaki"></div> <div id="youso"><p>移動したい要素</p></div> <div id="btn">クリックで移動</div> <script> var idousaki = document.querySelector('#idousaki'); var youso = document.querySelector('#youso'); var clone = youso.cloneNode(true); idousaki.appendChild(clone); var btn = document.querySelector('#btn'); btn.addEventListener('click', function() { idousaki.classList.toggle('open'); }, false); </script>

具体的には、「<div id="youso"><p>移動したい要素</p></div>」の中の
<p>移動したい要素</p>」を「<div id="idousaki"></div>」の中に移動して、
以下のようにしたいです。

<div id="idousaki"><p>移動したい要素</p></div> <div id="youso"></div> <div id="btn">クリックで移動</div>

もう一度ボタンをクリックすると、以下のように元に戻したいです。

<div id="idousaki"></div> <div id="youso"><p>移動したい要素</p></div> <div id="btn">クリックで移動</div>

toggle()のようにクリックする度に
要素を移動したり戻したりする方法はありますでしょうか?

ご教示いただけるとありがたいです。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/03/29 07:55

「移動」とはどのような操作でしょうか。具体的に例示していただけませんか?
tetutetutetu

2019/03/29 08:02

メッセージありがとうございます。 追記いたしました。
guest

回答2

0

ベストアンサー

toggleでする方法~

HTML

1<div id="idousaki" class="ido">移動先</div> 2<div id="youso"> 3 <p>移動したい要素</p> 4</div> 5<div id="btn">クリックで移動</div>

JavaScript

1var idousaki = document.querySelector('#idousaki'); 2var youso = document.querySelector('#youso'); 3var yousoChild = document.querySelector('#youso p'); 4var btn = document.querySelector('#btn'); 5 6btn.addEventListener('click', function() { 7 var ido = document.querySelector('.ido'); 8 idousaki.classList.toggle("ido"); 9 youso.classList.toggle("ido"); 10 ido.appendChild(yousoChild); 11}, false);

投稿2019/03/29 09:07

Yousuck

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetutetutetu

2019/03/29 11:18

ありがとうございます。移動できるようになりました!
guest

0

どこまでのブラウザを対応したいかによります

javascript

1<style> 2#idousaki{color:red;} 3#youso{color:yellow;} 4 5</style> 6<script> 7/* IE 対応 8if(!HTMLElement.prototype.closest){ 9 HTMLElement.prototype.closest=function(selector){ 10 var self=this; 11 while(p=self.parentNode){ 12 if([].map.call(p.querySelectorAll(selector),function(x){ 13 return x; 14 }).filter(function(x){ 15 return x===self; 16 }).length>=1) return self; 17 self=p; 18 } 19 return null; 20 } 21} 22ここまで */ 23 24window.addEventListener('DOMContentLoaded', function(e){ 25 var idousaki = document.querySelector('#idousaki'); 26 var youso = document.querySelector('#youso'); 27 var youso_p = youso.querySelector('p'); 28 document.querySelector('#btn').addEventListener('click', function(e) { 29 if(youso_p.closest('#youso')){ 30 idousaki.appendChild(youso_p); 31 }else{ 32 youso.appendChild(youso_p); 33 } 34 }); 35}); 36 37</script> 38<div id="idousaki"></div> 39<div id="youso"><p>移動したい要素</p></div> 40<div id="btn">クリックで移動</div>

投稿2019/03/29 08:03

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetutetutetu

2019/03/29 11:19

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問