如何添加  使用d3.js selection.text()方法

Rya*_*yan 16 javascript d3.js

selection.text(' ')似乎转换特殊字符,使其呈现实际文本,而不是我想要的空间.有没有办法阻止text()选择方法为我做这个转义?对于上下文,这是一个表格单元格,对于选择中的某些元素是空的,我需要在那里的空间,以便细胞正确渲染.

Ian*_*rts 34

使用JavaScript Unicode转义符而不是HTML实体. 在HTML中表示Unicode字符U + 00A0所以

selection.text('\u00A0')
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.


Mat*_*sch 8

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;
    });
  };
Run Code Online (Sandbox Code Playgroud)

这里重要的一点是在选择上调用.text()将在每个元素上设置textContent属性.因此,在您的情况下,正确的做法是使用

selection.text(' ');
Run Code Online (Sandbox Code Playgroud)

因此,如果您想使用空格,那么您只需在文本中使用空格,而不是使用html编码的空格.如果要使用html编码的字符,则必须将内容视为innerHTML.

selection.html('&nbsp;');
Run Code Online (Sandbox Code Playgroud)