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

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

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

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

5657閲覧

【jQuery】.html()を使って自要素も含めたHTMLコンテンツの取得方法が知りたい

k499778

総合スコア599

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2016/04/07 13:52

編集2016/04/07 13:56

現在HTMLとjQueryでプログラムを組んでいます。
仕様としては、ボタン押下時にHTMLコンテンツを取得するというものです。
.html()を使ってそれを実現しようとしています。

質問があるのですが、
結論から言うと

.html()を使って自要素も含めたHTMLコンテンツの取得するにはどうしたらいいでしょうか?

※別に.html()にこだわってはいなくて、HTMLコンテンツが取れればいいです。

.html()でHTMLコンテンツを取ってこようとすると、要素配下のHTMLコンテンツを取ってきてしまいます。
そのためそれぞれ別々にHTMLコンテンツを取ってきたいのにうまく取ってくることができません。

具体的に実現したいことは以下です。

HTML

1<ul id="hoge"> 2 <li class='a'><div>トマト</div></li> 3 <li class='b'><div>キャベツ</div></li> 4 <li class='c'><div>もやし</div></li> 5</ul> 6<button type="button">てすとぼたん</button> 7 8<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 9<script> 10$('button').on('click',function(){ 11 var firstHTML = $('.a').html(); 12 var secondHTML = $('.b').html(); 13 var thirdHTML = $('.c').html(); 14 console.log(firstHTML); //<div>トマト</div> 15 console.log(secondHTML); //<div>キャベツ</div> 16 console.log(thirdHTML); //<div>もやし</div> 17 18 /*実際は以下のようにしたい。<li>タグも含めて、自要素も含めてとってきたい 19 var firstHTML = "<li class='a'><div>トマト</div></li>"; 20 var secondHTML = "<li class='b'><div>キャベツ</div></li>" 21 var thirdHTML = "<li class='c'><div>もやし</div></li>"; 22 */ 23}); 24</script> 25

もしわかる方がいらっしゃればよろしくお願い致します。

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

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

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

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

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

guest

回答3

0

outerHTML の事でしょうか。

個人的にはシリアライズされたHTMLタグを使うよりも要素ノード単位で扱う方が確実だと思います。

Re: k499778 さん

投稿2016/04/07 14:08

編集2016/04/07 14:10
think49

総合スコア18162

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

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

k499778

2016/04/07 14:22

回答有り難うございます! idだといけました! ただclassだとundifinedになってしまいます。私何か間違っているでしょうか? もしおわかりでしたらお答えいただけると嬉しいです。 ----- <ul id="hoge"> <li class='a'><div>トマト</div></li> <li class='b'><div>キャベツ</div></li> <li id='c'><div>もやし</div></li> </ul> <button type="button">てすとぼたん</button> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $('button').on('click',function(){  var a = document.getElementsByName("a");  var b = document.getElementsByClassName("b");  var c = document.getElementById("c"); console.log(a.outerHTML); //undifined console.log(b.outerHTML); //undifined console.log(c.outerHTML); //<li id="c"><div>もやし</div></li> }); </script> -----
think49

2016/04/07 14:27

getElementsByClassName が返すのは HTMLCollection です。 index を指定しなければ、要素ノードを参照できません。
k499778

2016/04/07 14:47

HTMLCollectionを返すからなのですね。 もう少し勉強してみます。 返答してくださりありがとうございます。
guest

0

ベストアンサー

jQueryオブジェクトにouterHTMLを使いたい場合はちょっと一捻りするだけです。

javascript

1$('button').on('click',function(){ 2 var firstHTML = $('.a')[0].outerHTML; 3 var secondHTML = $('.b')[0].outerHTML; 4 var thirdHTML = $('.c')[0].outerHTML; 5 console.log(firstHTML); // "<li class='a'><div>トマト</div></li>" 6 console.log(secondHTML); // "<li class='b'><div>キャベツ</div></li>" 7 console.log(thirdHTML); // "<li class='c'><div>もやし</div></li>" 8});

多用する場合はjQuery関数化してしまってもいいでしょう。

javascript

1// 「outerHtml」の部分は何でもいいです 2$.fn.outerHtml = function(){ 3 return $(this)[0].outerHTML; 4}; 5 6var firstHTML = $('.a').outerHtml(); 7 8console.log(firstHTML); // "<li class='a'><div>トマト</div></li>"

投稿2016/04/07 14:36

yamato_hikawa

総合スコア2092

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

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

k499778

2016/04/07 14:46

回答ありがとうございます。 実現したい処理を実装することができました。 感謝しています。
guest

0

検証してないですけど、

var firstHTML = $('.a').parent().html(); var secondHTML = $('.b').parent().html(); var thirdHTML = $('.c').parent().html();

とかで、親要素取得できませんでしたっけ・・・?!
間違ってたらごめんなさい。

っと、parent()のドキュメントです。

https://api.jquery.com/parent/

投稿2016/04/07 13:59

ItoTomonori

総合スコア1283

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

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

k499778

2016/04/07 14:08

回答有り難うございます。 実際にやってみたのですが、そうすると全部をとってきてしまいますね^^; ---- 出力ログ。以下が3回 <li class="a"><div>トマト</div></li> <li class="b"><div>キャベツ</div></li> <li class="c"><div>もやし</div></li> ----
ItoTomonori

2016/04/07 14:22

あ、そうですよね、、、そうなってしまいすよね、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問