在svg文本元素中添加带有空格的文本

hae*_*mse 3 javascript whitespace svg text textnode

我试图添加一些包含几个空格的文本到svg文本元素.我完全不屑一顾,因为当有一个以上的空格后,它们被正确地添加到元素中但不会显示在浏览器窗口中.

这个人在这里使用文本元素中的空格,当我将其重现为静态时它工作正常,但是当用js添加文本时,空格会消失!

嵌入在HTML中的SVG中的重要空白

如何将带有空格的文本动态添加到svg?

谢谢任何答案!

    var legend = document.createElementNS("http://www.w3.org/2000/svg", "text");
    var tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
    // Set any attributes as desired
    legend.setAttribute("id","legend");
    legend.setAttribute("text-anchor", "middle");
    legend.setAttribute("alignment-baseline", "hanging");
    legend.setAttribute("xml:space","preserve");
    tspan.setAttribute("xml:space","preserve");
    tspan.setAttribute("id","tspanObj");
    var myText = document.createTextNode(legendTxt);
    tspan.appendChild(myText);
    legend.appendChild(tspan);
    legend.setAttribute("x", Math.round(this.options.windowWidth/2));
    legend.setAttribute("y", this.options.upperPadding+this.options.barH+this.options.legendDist);
    this.elements.jSvgElem.append(legend);
Run Code Online (Sandbox Code Playgroud)

Rob*_*son 13

您需要使用setAttributeNS在xml命名空间中设置属性,以便在您的情况下...

legend.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve");
Run Code Online (Sandbox Code Playgroud)

如果xml:space在文本上设置了,则子tspan将使用该值,因此您不需要在您的情况下再次设置它.

  • 非常感谢你!你是天使!:D虽然我必须将属性设置为tspan元素本身,但它现在可以正常工作! (2认同)