18

selection.text(' ')特殊文字を変換して、必要なスペースではなく実際のテキストをレンダリングするように見えます。text()選択のメソッドがこれをエスケープするのを防ぐ方法はありますか?コンテキストとして、これは選択範囲内の一部の要素に対して空のテーブルセルであり、セルが適切にレンダリングされるように、そこにスペースが必要です。

4

2 に答える 2

40

HTMLエンティティではなくJavaScriptUnicodeエスケープを使用します。 HTMLでは、Unicode文字U+00A0を示します。

selection.text('\u00A0')

あなたがやりたいことをする必要があります。

于 2012-10-14T15:26:43.440 に答える
9
d3_selectionPrototype.text = function(value) {
    return arguments.length < 1 ? this.node().textContent : this.each(typeof value === "function" ? function() {
      var v = value.apply(this, arguments);
      this.textContent = v == null ? "" : v;
    } : value == null ? function() {
      this.textContent = "";
    } : function() {
      this.textContent = value;
    });
  };

ここで重要なのは、選択範囲で.text()を呼び出すと、各要素にtextContentプロパティが設定されるということです。したがって、あなたの場合に行うべき正しいことは、使用することです

selection.text(' ');

したがって、スペースを使用する場合は、HTMLでエンコードされたスペースではなく、テキスト内でスペースを使用する必要があります。htmlでエンコードされた文字を使用する場合は、コンテンツをinnerHTMLとして扱う必要があります。

selection.html('&nbsp;');
于 2012-10-14T14:45:28.670 に答える