2

XML ファイルを解析して html で表示するスクリプトを作成しています。ここにあります:

<script>
$.get("api.xml", function (xml) {
    $(xml).find("row").each(function () {

       var date = $(this).attr('date');
       var amount = $(this).attr('amount');
       var balance = $(this).attr('balance');

document.write("A: " + date + "<br />B: " + amount + " ISK<br />C: " + balance + " ISK<br /><br /><br /><br />");
    });
});
</script>

"document.write" の出力を変更して、値 "amount" が正の場合は "green" という単語を入力し、それ以外の場合は "red" という単語を入力します。以下のように書いてみました。

<script>
$.get("api.xml", function (xml) {
    $(xml).find("row").each(function () {

       var date = $(this).attr('date');
       var amount = $(this).attr('amount');
       var balance = $(this).attr('balance');

document.write("<script> if (amount >= 0) { document.write("green"); } else{ document.write("red"); } </scri" + "pt>");
    });
});
</script>

しかし、その部分では、「document.write」で構文エラーが発生します。私が間違って書いたものと、どうすれば修正できますか?

4

3 に答える 3

3

答えを得るには、このコードがどのように強調表示されているかを見てください。「緑」と「赤」という言葉は引用符の外にあります。一重引用符を使用する (または二重引用符をエスケープする) 必要があります。

もう 1 つの質問は、なぜこのような単純なタスクにメタプログラミングを使用するのかということです。2 つの異なるdocument.writeステートメントで条件を記述するだけです。

于 2012-08-26T11:07:01.423 に答える
3

document.write で出力を書き込む前に色を計算できると思います。このようなものが動作するはずです:

<script>
$.get("api.xml", function (xml) {
  $(xml).find("row").each(function () {
    var date = $(this).attr('date');
    var amount = $(this).attr('amount');
    var balance = $(this).attr('balance');

    var color = "green";
    if (amount < 0) {
     color = "red";
    }

    document.write("A: " + date + "<br />B: <span style='color:" + color + "'>" + amount + " ISK</span><br />C: " + balance + " ISK<br /><br /><br /><br />");
 });
});
</script>

(構文チェックなし)

于 2012-08-26T11:05:56.783 に答える
2
<script>
$.get("api.xml", function (xml) {
    $(xml).find("row").each(function () {

       var date = $(this).attr('date');
       var amount = $(this).attr('amount');
       var balance = $(this).attr('balance');
       document.write(amount >= 0 ? "green" : "red");
    });
});
</script>
于 2012-08-26T11:05:46.730 に答える