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

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

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

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

Q&A

解決済

3回答

7120閲覧

Jsファイルからhtml要素をhtmlファイルに出力させたいです

OOO_777

総合スコア50

JavaScript

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

0グッド

0クリップ

投稿2017/08/08 04:21

###Jsファイルからhtml要素を出力したいです
bodyの一番最後にjsから下記要素をhtmlへ出力させたいです。

html

1 <div id="pop"> 2 <div class="wrap"> 3 <div class="block"> 4 <p class="icon"><img src="../img/pop_icon.png" alt=""></p> 5 <p class="ttl"> 6 タイトルタイトル 7 </p> 8 <p class="txt"> 9 テキストテキストテキスト<br> 10 テキストテキストテキスト 11 </p> 12 <ul class=""> 13 <li id="close">文字</li> 14 <li id="open"文字</li> 15 </ul> 16 </div> 17 </div> 18 </div>

上記のhtml要素をJsファイルからhtmlへ出力したいのですが、innerHTMLに上手く値を埋め込めないです。
この場合はもっと一行など細かく指定したほうがよろしいでしょうか?
jsから上手く出力させる方法を教えて頂きたいです。

###該当のソースコード

function appendSeacrhList(){ var element = document.createElement('div'); element.id = "test"; element.innerHTML = " '<div id="pop">'+ '<div class="wrap">'+ '<div class="block">'+ '<p class="icon"><img src="../img/pop_icon.png" alt=""></p>'+ '<p class="ttl">'+ 'タイトルタイトルタイトルタイトル'+ '</p>'+ '<p class="txt">'+ 'テキストテキストテキストテキスト<br>'+ 'テキストテキストテキストテキスト。'+ '</p>'+ '<ul class="">'+ '<li id="close">テキスト</li>'+ '<li id="open">テキストテキストテキストテキスト</li>'+ '</ul>'+ '</div>'+ '</div>'+ '</div>' "; document.getElementsByTagName('body')[0].appendChild(element); }; appendSeacrhList();

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

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

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

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

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

guest

回答3

0

ベストアンサー

単純に、一番外側の""(ダブルクオート)が原因なのだと思います。

+と改行で区切っている文字列をつなげると何が原因かがわかりやすくなりますが、簡単のためごく一部だけ抜粋すると、

js

1element.innerHTML = "'<div id="pop">...</div>'"

のような状態になっていて、"pop"等をダブルクオートで囲っているつもりが外側に出てしまっています。これが原因でSyntaxErrorを引き起こしてしまうようです。

js

1// 修正後 2function appendSeacrhList(){ 3 var element = document.createElement('div'); 4 element.id = "test"; 5 element.innerHTML = // " <= 不要 6 '<div id="pop">'+ 7 '<div class="wrap">'+ 8 '<div class="block">'+ 9 '<p class="icon"><img src="../img/pop_icon.png" alt=""></p>'+ 10 '<p class="ttl">'+ 11 'タイトルタイトルタイトルタイトル'+ 12 '</p>'+ 13 '<p class="txt">'+ 14 'テキストテキストテキストテキスト<br>'+ 15 'テキストテキストテキストテキスト。'+ 16 '</p>'+ 17 '<ul class="">'+ 18 '<li id="close">テキスト</li>'+ 19 '<li id="open">テキストテキストテキストテキスト</li>'+ 20 '</ul>'+ 21 '</div>'+ 22 '</div>'+ 23 '</div>'; 24 // "; <= 不要 25 document.getElementsByTagName('body')[0].appendChild(element); 26 }; 27 appendSeacrhList();

投稿2017/08/08 04:39

othersight

総合スコア356

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

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

OOO_777

2017/08/08 10:36

続けてのご回答ありがとうございます。 またまた勉強になりました。 ありがとうございます。
guest

0

element.innerHTML = "

の箇所がおかしいですね
ダブルクォーテーションじゃなくてシングルクォーテーションx2ではないのですか?

element.innerHTML = ''

モダンなブラウザならバッククーテーションをつかってヒアドキュメントを利用することも可能です。

それとbodyが確定してからの処理になるのでappendSeacrhList()はload後に実行して下さい

window.onload=function(){ appendSeacrhList(); }

投稿2017/08/08 04:28

yambejp

総合スコア114839

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

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

OOO_777

2017/08/08 09:17

ご回答ありがとうございます。 無事にできました。 load後に実行する ← こちらも勉強になりました。
guest

0

JavaScript

1// element.innerHTML = " 2 element.innerHTML = 3 4// 略 5 6// "; 7 ;

投稿2017/08/08 04:28

x_x

総合スコア13749

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

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

x_x

2017/08/08 05:09

動作確認のうえ投稿したのですが…jsfiddle.netは信頼できるのですかね?
kei344

2017/08/08 05:31

To: x_xさん > jsfiddle.netは信頼できるのですか 「動かせる状態のコードを表示する」という機能においては他のサービスとさほど変わらないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問