如何使用 javascript insideHTML 更改 svg 文本标签
我正在使用raphaeljs,我想在svg中显示html(不仅仅是文本),
所以我使用这个代码:
var r = Raphael("holder", 200, 300);
var t = r.text(10, 10, "ssdwqdwq");
t.node.innerHTML='dddd'
但我无法更改svg的内容,所以我在firebug中控制台它,
console.log(t.node)
它显示了:
<text x="10" y="13.5" text-anchor="middle" style="font: 10px "Arial";" font="10px "Arial"" stroke="none" fill="#000000">
那么如何更改文本在 svg 上使用 javscript
谢谢
i was using raphaeljs , and i want to show html(not only text) in svg,
so i use this code :
var r = Raphael("holder", 200, 300);
var t = r.text(10, 10, "ssdwqdwq");
t.node.innerHTML='dddd'
but i cant change the svg's content , so i console it in firebug ,
console.log(t.node)
it show this :
<text x="10" y="13.5" text-anchor="middle" style="font: 10px "Arial";" font="10px "Arial"" stroke="none" fill="#000000">
so how to change the text using javscript on svg
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
SVG 节点没有innerHTML 属性(它们不是HTML)。
使用 textContent 代替:
t.node.textContent='dddd'
SVG nodes don't have a innerHTML property (they're not HTML).
Use textContent instead:
t.node.textContent='dddd'
我可以通过设置
元素的 textContent 属性来实现此目的。如果您知道元素的 ID,事情就会变得容易得多。I was able to accomplish this by setting the textContent property of the
<text>
element. Makes it a lot easier if you know the ID of the element.如果 svg 文本的代码如下所示:
如果您使用的是 JQuery,请尝试以下操作:
if the code for the svg text is like this:
if you are using JQuery try this:
更改 svg 元素的
ìnnerHTML
属性在 2010 年可能是一个问题。2023年它可以在所有现代浏览器中完美运行:
通过< 将 HTML 元素附加到 SVG /code>
动态附加外部对象时使用正确的命名空间至关重要:
请记住,
foreignObject
只能在具有 HTML 渲染支持的应用程序中工作。许多图形/桌面应用程序可能会省略其内容。
您可能还会在某些库中尝试将 svg 转换为 pdf 时遇到问题。
如果您不需要复杂的多行文本布局,则最好坚持使用 SVG 的原生
和
元素。Changing
ìnnerHTML
property for svg elements might have been a problem in 2010.2023 it works flawlessly in all modern browsers:
Append HTML elements to SVG via
<foreignObject>
It is crucial to use the correct namespaces when attaching the foreign object dynamically:
Keep in mind,
foreignObject
will only work in applications with HTML rendering support.A lot of graphic/desktop applications might omit its content.
You might also encounter issues trying to convert your svg to pdf in some libraries.
If you don't need complex multiline text layouts, you should better stick with SVG's native
<text>
and<tspan>
elements.除了Zecc的答案之外 - 可以使用innerHtml来获取SVG元素的内容,例如(我确定) - 文本元素和svg路径的内容
In addition to Zecc's answer - it IS possible to use innerHtml to get content of SVG elements, for example( that i'm sure of) - of text element and of a svg path
我的转译器没有
textContent
属性的定义我在这个 2879473 问题中找到了另一个答案。
你可以通过
innerHTML
得到相同的结果,但是DOM API 可能比属性快一点。
请参阅Maxim回答
(抱歉,我没有测试
createTextNode
和appendChild
)My transpiler does not have the definition of
textContent
propertyand I found an another answer in this 2879473 question.
you can get same results by
innerHTML
, butDOM API may be a bit faster than property.
see Maxim answer
(Sorry, I did not test
createTextNode
andappendChild
spped)