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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

jQuery

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

HTML

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

Q&A

解決済

1回答

1319閲覧

XMLをHTMLにjQueryで読み込み、改行・リンクを貼ることができません

fujiton

総合スコア9

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

jQuery

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

HTML

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

0グッド

1クリップ

投稿2020/04/04 02:58

XMLファイルをHTMLにjQueryで読み込みました。
XMLの見出しと本文を繰り返し表示はできています。
見出し2と本文2の箇所だけテキストにリンクを貼りたいと思い、<link>こちら</link>を追加しました。

結果、テキストは表示されるのですが、リンクが機能していません。
また、文章中に改行を入れたいと思い、XMLファイルに改行の
をいれても改行できません。

よろしくお願いたします。

javascripi

$(function() { $.ajax({ url: 'text.xml', dataType: 'xml', success: function(data) { // NEWSページ var insertContents = ''; $('item', data).each(function() { var thisItem = $(this); insertContents += '<li>'; insertContents += '<h1>'; insertContents += thisItem.children('見出し').text(); insertContents += '</h1>'; insertContents += '<h1>'; insertContents += thisItem.children('見出し2').text(); insertContents += '</h1>'; insertContents += '<p>'; insertContents += thisItem.children('本文').text(); insertContents += '</p>'; insertContents += '<p>'; insertContents += thisItem.children('本文2').text(); insertContents += '<a href="#' + thisItem.children('link').text() + '" target="_blank">'; insertContents += '</a>'; insertContents += '</p>'; insertContents += '</li>'; }); $('.linkbox-news').append(insertContents); } }); });

XML

<?xml version="1.0" encoding="utf-8"?> <news> <item> <見出し>〇〇〇〇</見出し> <本文>〇〇〇〇</本文> </item> <item> <見出し>〇〇〇〇</見出し> <本文>〇〇〇〇</本文> </item> <item> <見出し>〇〇〇〇</見出し> <本文>〇〇〇〇</本文> </item> <item> <見出し>〇〇〇〇</見出し> <本文>〇〇〇〇</本文> </item> <item> <見出し2>〇〇〇〇</見出し2> <本文2>〇〇〇〇<link>こちら</link>〇〇〇〇</本文2> </item> </news>

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

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

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

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

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

m.ts10806

2020/04/04 03:09

改行はHTML的にはbrタグにする必要があるのでそっちはともかく 「機能しない」だけでは分からないので、具体的にどのように「コード」が挿入されたのかデベロッパーツールで確認してみてください。
fujiton

2020/04/04 03:58

ご指摘ありがとうございます。 XMLの改行したい箇所に <本文>〇〇〇〇<改行></改行>〇〇〇〇</本文> という形でタグを入れ、 insertContents += thisItem.children('改行').text(); insertContents += '<br>'; と追加しましたが、html結果は <p>〇〇〇〇〇〇〇〇</p> と表示され飛ばされるようです。 リンク箇所は 〇〇〇〇こちら〇〇〇〇 <a href="#" target="_blank"></a> となり、リンクタグが後ろに付きました。 原因がお分かりでしたら回答をよろしくお願いします。
m.ts10806

2020/04/04 08:56

質問は編集できますので適宜ご対応ください。 ただ、既にでた回答で解決ですね。 改行タグを使うこと、リンク文言を入れること。
guest

回答1

0

ベストアンサー

結果、テキストは表示されるのですが、リンクが機能していません。

まず、aタグが空要素になっていますから、表示がされません。
次に、thisItemはitem要素なので、その子要素にlink要素はありません。孫要素です。

The .children() method differs from .find() in that .children() only travels a single level down the DOM tree while .find() can traverse down multiple levels to select descendant elements (grandchildren, etc.) as well.

.children() | jQuery API Documentation

なお、改行については、補足欄でm.ts10806さんがご指摘された通りです。

投稿2020/04/04 03:30

Lhankor_Mhy

総合スコア36960

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問