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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

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

Q&A

3回答

1248閲覧

素のJSで,要素を挿入

-1an.vvks-

総合スコア71

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

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

0グッド

0クリップ

投稿2017/10/05 15:12

編集2017/10/07 03:01

###素のJSで複数要素を挿入したい

--- やりたいこと ---
あるcssクラスの1番目の子孫要素を取得して,
あるcssクラスの2番目以降の要素にコピーしたい

--- 試したこと ---

html

1<dl> 2 <dt>DEFAULT FONT of your browser</dt> 3 <dd class="jsDdExample"></dd> 4 <dd class="jsDdChars"> 5 <p>A B C Ć Č D Đ E F G H I J K L M N O P Q R S Š T U V W X Y Z Ž</p> 6 <p>a b c č ć d đ e f g h i j k l m n o p q r s š t u v w x y z ž</p> 7 <p>А Б В Г Ґ Д Ђ Е Ё Є Ж З Ѕ И І Ї Й Ј К Л Љ М Н Њ О П Р С Т Ћ У Ў Ф Х Ц Ч Џ Ш Щ Ъ Ы Ь Э Ю Я</p> 8 <p>а б в г ґ д ђ е ё є ж з ѕ и і ї й ј к л љ м н њ о п р с т ћ у ў ф х ц ч џ ш щ ъ ы ь э ю я</p> 9 <p>Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω</p> 10 <p>α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω</p> 11 <p>ά Ά έ Έ έ Ή ί ϊ ΐ Ί ό Ό ύ ΰ ϋ Ύ Ϋ Ώ Ă Â Ê Ô Ơ Ư ă â ê ô ơ ư</p> 12 <p>1 2 3 4 5 6 7 8 9 0 ‘ ? ’ “ ! ” ( % ) [ # ] { @ } / &amp; &lt; - + ÷ × = &gt; ® © $ € £ ¥ ¢ : ; , . *</p> 13 </dd> 14 15 <dt class="ff-Ferrum">Ferrum</dt> 16 <dd class="ff-Ferrum jsDdExample"></dd> 17 <dd class="ff-Ferrum jsDdChars"></dd> 18 19 <dt class="ff-Roboto">Roboto</dt> 20 <dd class="ff-Roboto jsDdExample"></dd> 21 <dd class="ff-Roboto jsDdChars"></dd> 22</dl> 23 24<script> 25 var js_ddChars= document.getElementsByClassName('jsDdChars'); 26 for(var i = 1, len = js_ddChars.length; i <= len; i++){ 27 js_ddChars.item(i).innerHTML = js_ddChars.item(0).children; 28 } 29</script>

--- 問題 ---
実行すると,<dd class="jsDdChars"></dd>の中に,
"[object HTMLCollection]" の文字列が挿入されてしまう
(本当は<p></p>を入れたい)

--- 質問 ---
どうすれば,複数の要素を挿入できるか

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

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

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

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

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

guest

回答3

0

テキストノードは不要ですかね?

JavaScript

1var fragment = document.createDocumentFragment(); 2var js_ddChars = document.getElementsByClassName('jsDdChars'); 3for (var i = 0, len = js_ddChars[0].children.length; i < len; i++) { 4 fragment.appendChild(js_ddChars[0].children[i].cloneNode(true)); 5} 6 7for (i = 1, len = js_ddChars.length; i < len; i++) { 8 js_ddChars[i].appendChild(fragment.cloneNode(true)); 9}

投稿2017/10/06 01:11

x_x

総合スコア13749

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

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

-1an.vvks-

2017/10/06 14:55

他の方のコードと比べ,こちらのコードは一見,冗長にも見えるのですが 要素を一度,fragmentに入れてから扱うときのメリットは何でしょうか?
think49

2017/10/07 08:35 編集

x_x さんではありませんが、 - XHTML でも使える - 変更に強い (children, childNodes の切替が容易) - innerHTML パーサを通さない生のノードが複製される
-1an.vvks-

2017/10/07 13:52

「変更に強い」というのは,大きなメリットですね. いずれ必要になると思うのでメモらせていただきました^^
x_x

2017/10/10 06:24

あ、冗長ですか? innerHTMLのない時代(HTML5前)にはこうだったんですよね。 未検証ですが、速度的にも速いかと思います。
guest

0

全部の要素をコピーするのであれば下記のように考えましたが、部分的な選択の必要があるのでしょうか。

javascript

1var js_ddChars= document.getElementsByClassName('jsDdChars'); 2for(var i = 1, len = js_ddChars.length; i < len; i++){ 3 js_ddChars.item(i).innerHTML = js_ddChars.item(0).innerHTML; 4}

また、ループ条件のi <= lenは、配列のサイズを超えてしまうので、
i < lenとするとよいかと思います。

投稿2017/10/05 15:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

-1an.vvks-

2017/10/06 14:47

>配列のサイズを超えてしまうので、i < lenとするとよいかと思います。 うっかりしてました!修正しときます><
guest

0

javascript

1var js_ddChars= document.getElementsByClassName('jsDdChars'); 2for(var i = 1; i < js_ddChars.length; i++){ 3 var n=js_ddChars[0].firstChild; 4 while(n){ 5 js_ddChars[i].appendChild(n.cloneNode(true)); 6 n=n.nextSibling; 7 } 8}

投稿2017/10/06 00:59

yambejp

総合スコア114843

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

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

-1an.vvks-

2017/10/06 14:50

nextSibling初めて知りました,勉強になります! ところで,あえてwhile文を使っているのはなぜでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問