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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

1回答

1007閲覧

insertAdjacentHTMLで重ねて追加

gakusei-kaeru

総合スコア18

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

0クリップ

投稿2021/11/11 10:12

前提・実現したいこと

追加ボタンを押すと、カードの形をしたdiv要素を同じ場所に重ねて追加していくプログラムが作りたいです。
そこで、JavaScriptでinsertAdjacentHTMLというコードを使って追加してみました。
しかし、追加されたときにdiv要素が重ねられず困っています。
(何度追加しても同じ場所に出現しつづけ、かつ前に追加したdiv要素は動かしたくありません)

試したこと

insertAdjacentHTMLの追加される位置の指定で使える'beforebegin''afterbegin''beforeend''afterend'を試してみましたが、いずれも重ねて追加されませんでした。
この画像のように、重ならずずれて追加されていきます
イメージ説明

ソースコード

HTML

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="音響プログラム.css"> <title>音響プログラム</title> </head> <body> <h1>音響プログラム</h1> <p><div id="MusicCount" style="display: inline-block; _display: inline;">合計0音</div> <input type="button" value="音を追加" id="tsuika" class="tsuika" onclick="tsuikaClick()"> <p style="display:inline;" id="jikken"></p></p> <div id="idogo"></div> <div class='saisei' id="saisei"></div> <input type="button" value="終了" class="tsuika" onclick="hozonClick()"> <p id="aa"></p> <!--JS・jQueryと接続--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="cmanObjMove_v091.js"></script> <script src="音響プログラム.js"></script> <script src="jquery-ui.js"></script> <script src="jquery-ui.min.js"></script> </body> </html>

JavaScript
//追加ボタンをクリックしたときの処理
function tsuikaClick() {
//ClickCountCountを1増やす
ClickCount++;

//MusicCountを1増やして表示 MusicCount++; var mp = document.getElementById("MusicCount"); mp.innerHTML = "合計"+MusicCount+"音"; //ClickCountを対応させる var DivID = 'card'+ClickCount; var FileID = 'InputFile'+ClickCount; var card = '<div id='+DivID+' style="cursor:pointer" class="MusicBox" onMouseEnter="HoverHandler()">'+ClickCount+'<input type="file" id='+FileID+'><input type="button" value="音を削除" class="sakujo" id='+ClickCount+'></div>' //HTMLへ出力 var tsuika = document.querySelector('.saisei'); tsuika.insertAdjacentHTML('beforebegin',card); //削除ボタンがクリックされたときのプログラム $('.sakujo').on('click', function(){ var NewButtonId = $(this).attr("id"); var element = document.getElementById('card'+NewButtonId); element.remove(); MusicCount--; //MusicCountを1減らす var mp = document.getElementById("MusicCount"); mp.innerHTML = "合計"+MusicCount+"音"; }); //cardを自由に配置できるようにする $(function() { $('.MusicBox').draggable(); });

};

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

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

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

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

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

guest

回答1

0

ベストアンサー

ちょっと意味が不明ですが、divをposition:absoluteで処理すればよいのでは?

投稿2021/11/11 10:20

yambejp

総合スコア116568

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

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

gakusei-kaeru

2021/11/13 02:43 編集

分かりにくくてすいません???????? yambejpさんが教えてくださったposition:absoluteで解決できました! お陰さまで次に進めそうです???? 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問