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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

3回答

521閲覧

JavaScriptでのDOM操作(appendChild)

van-0215

総合スコア89

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/01/31 01:47

現在JSで、DOM操作を行なっているのですが、躓いたため質問させてください。

HTML

1<section class="todo_category"> 2 <ul> 3 </ul> 4</section>

上記のようなDOMがあります。<ul>の下に新たな値を追加したいです。
そのためいかのように書いて、window.onload() 時に追加されるようにしたかったのですが、なぜか起動しません。要素の追加の方法は以下ではダメなのでしょうか?
教えてください。

javascript

1let buttonObj = ` 2 <li class="adjust-box box-1x2" id="" ontouchstart=""> 3 <div class="inner"> 4 <p>test</p> 5 </div> 6 </li>` 7 let todoParentObj = document.getElementsByClassName('todo_category')[0].getElementsByTagName('ul'); 8 todoParentObj[0].appendChild(buttonObj);

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

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

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

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

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

m.ts10806

2019/01/31 01:50

エラー出てますけどそこは確認されました? <ブラウザ開発ツールのコンソール
x_x

2019/01/31 02:13

「jQuery」タグが付いていますが、関係あるのでしょうか? jQueryでの回答でもよいという意味ですか?
guest

回答3

0

jQueryのタグもついているので、jQueryで。
付与するだけなら以下。

jQuery

1//前略 2$('.todo_category').find('ul').append(buttonObj);

個人的にはbuttonObjは文字列じゃなくした方が良い気がします(メンテと可読性のため)。

jQuery

1let buttonObj = 2$('<li>', { 3 class: "adujst-box box-1x2", 4 id: "", 5 ontouchstart: "" 6}); 7let div = $('<div>', { class: "inner" }); 8let p = $('<p>', { text: "test" }); 9 10$('.todo_category').find('ul').append(buttonObj.append(div.append(p)));

投稿2019/01/31 01:55

編集2019/01/31 02:03
madoka9393

総合スコア992

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

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

0

buttonObjがElementではなく単なる文字列だからです。
今のままで入れたいのでしたらinnerHTMLを使うべきです。
appendChildを使いたいのでしたらcreateElementなどで作る必要があります。

投稿2019/01/31 01:55

m.ts10806

総合スコア80850

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

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

0

dom処理になっていませんね
もしappendChildで処理するならliはcreateElementしてください
文字列を挿入したいならinnerHTMLで誤魔化せばいいでしょう

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 let buttonObj = ` 4 <li class="adjust-box box-1x2" id="" ontouchstart=""> 5 <div class="inner"> 6 <p>test</p> 7 </div> 8 </li>`; 9 var todoParentObj=document.querySelector('.todo_category ul'); 10 todoParentObj.innerHTML+=buttonObj; 11}); 12</script> 13 14<section class="todo_category"> 15<ul> 16</ul> 17</section>

dom処理

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(){ 3 var li=document.createElement('li'); 4 li.classList.add('adjust-box','box-1x2'); 5 li.setAttribute('id',''); 6 li.addEventListener('touchstart',function(){}); 7 var div=document.createElement('div'); 8 div.classList.add('inner'); 9 var p=document.createElement('p'); 10 document.querySelector('.todo_category ul').appendChild(li); 11 li.appendChild(div); 12 div.appendChild(p); 13 p.appendChild(document.createTextNode('test')); 14}); 15</script> 16 17<section class="todo_category"> 18<ul> 19</ul> 20</section>

投稿2019/01/31 01:55

編集2019/01/31 02:09
yambejp

総合スコア114775

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

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

van-0215

2019/01/31 02:03 編集

質問ですが、appendChild , innerHTMLどちらでもできると思いますが、どちらの方が良いのでしょうか
yambejp

2019/01/31 02:13 編集

dom処理追記しておきました。 ちゃんとできるなら本来ならdom処理のほうが構造的に処理ができるので よいでしょうけど、冗長になりがちなので無理してまでやらなくてもよいかと。 またjQueryなら $('.todo_category ul').append($(buttonObj)) みたいにすればdomとして機能するので選択肢としてはありです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問