1

このコードを使用している場合:

<script type="text/javascript">
$(document).ready(function() {

$.ajax({
type: "GET",
url: "nyhederlang.xml",
dataType: "xml",
success: parseXml,
error: function(){alert("Error: Something went wrong");}
 });
 });

 function parseXml(xml)
 {
 //print the title and the description
 $(xml).find("article").each(function()
 {
 $("#output").append("<div>");
  $("#output").append("<b>" + $(this).find("title").text() + ":</b> <br />");
  $("#output").append($(this).find("paragraphs").text());
   $("#output").append("</div>");
  });
  }
  </script>

#output の先頭に div と /div の両方が表示されます。

/div が #output の最後に配置されないのはなぜですか?

これは次のようになります。

<div id="output">
<div></div>
<b>Some title text</b>
.
.
.
.
.
4

3 に答える 3

8
$("#output").append("<div>");

単に追加するのでは"<div>"なく、整形式の (閉じた) html 要素を追加します。それは完全なdivです。

解決策は、完全な HTML を作成してから追加することです。

var html = "<div>";
html += "<b>" + $(this).find("title").text() + ":</b> <br />";
html += $(this).find("paragraphs").text();
html += "</div>";
$("#output").append(html);

最初に追加された div にそのコンテンツを追加することもできますが、Ian が指摘しているように、追加の数を最小限に抑える方が常に効率的です。

于 2013-01-07T13:27:57.413 に答える
0

各要素を追加する代わりに; 文字列に追加してから、その文字列を追加します。元:

var html = "";
html += "<div>"
html += "<b>" + $(this).find("title").text() + ":</b> <br />";
html += $(this).find("paragraphs").text();
html += "</div>";

$("#output").append(html);
于 2013-01-07T13:31:38.070 に答える
0

<div>部分的なタグを追加することはできません。

jQueryは、タグを追加すると自動的にタグを閉じるため、次の追加は最初のの後に配置されます<div>。そして、</div>あなたが追加する最後は、その後に別の空のdivになります。

あなたがすべきことは、文字列全体を構築し、それを1回の.append()呼び出しで追加することです。

$("#output").append("<div>
                   +"<b>" + $(this).find("title").text() + ":</b> <br />"
                   +$(this).find("paragraphs").text()
                   +"</div>");
于 2013-01-07T13:30:21.903 に答える