2

現在、次のような行がたくさんあります。

txt = "Can't print the value for <span class='keyword'>"+arguments[1]+"</span> before it's set";

私はそれからやっています

$('#mydiv').append($('<div/>').html(txt));

これはひどく見え、引数内の html をエスケープする必要があります[1]

私が考えることができる唯一の代替手段は、すべてのテキストが独自の要素内にあることを確認することです:

var spans = [];
spans[0] = $('<span/>').text("Can't print the value for ");
spans[1] = $('<span/>').text(arguments[1]).className('keyword');
spans[2] = $('<span/>').text(" before it's set");
$('#mydiv').append($('<div/>').append(spans[0],spans[1],spans[2]));

これは、単純なテキスト行だけではかなりの数です。他にできることはありますか?

編集: これは、テンプレート エンジンによって処理されるべきものではありません。これは、javascript ロギング機能によって生成された html です。

4

2 に答える 2

1

一貫した形式の場合は、通常の文字列として追加してから、キーワード部分を検索します。

$('<div/>')
  .appendTo('#mydiv')
  .html("Can't print the value for <span class='keyword'></span> before it's set")
  .find('.keyword').text(arguments[1]);
于 2012-05-05T03:50:24.433 に答える
0

JS を使用して多数の HTML を作成し続ける場合は、テンプレート ライブラリを使用することをお勧めします。私は最近改宗したので、要点を理解するのに長い時間がかかりました。しかし、多くの成功したサイト (twitter、github など) や偉大な John Resigがテンプレートを促進したり、テンプレートを多用したりしているのを見て、私は理解しようとすることに固執してよかったと思っています。今、私はそれを取得します。これは、関心を分離し、ロジックを見えないようにするためのものです。

私はこの非常に基本的なテンプレート ライブラリを使用しています: http://blueimp.github.com/JavaScript-Templates/ただし、underscore.jsmustache.jsによって提供されるテンプレートの方がより一般的です。

私が使用しているライブラリの利点は、1kb 未満という非常に小さいことであり、基本的には、それらに精通している場合は php/asp コードを書くようなものです。

<script>エスケープせずにタグ内に HTML を記述できます。

変数 を使用するtxtと、構文は次のようになります。

<script>
  var data={txt : "Can't print the value for <span class='keyword'>"+arguments[1]+"</span> before it's set"};

  <div>{%=o.txt%}</div>
</script>
于 2012-05-05T03:50:52.823 に答える