gpt4 book ai didi

javascript - SVG,当我动态创建文本时,文本不会在 textPath 上呈现

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:18 25 4
gpt4 key购买 nike

我想动态创建一个textPath,所以我这样写:

function makeSVG(tag, attrs) {
var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
for (var k in attrs)
el.setAttribute(k, attrs[k]);
return el;
}

function appendSVG(item, tag, attrs) {
var el = document.getElementById(item);
el.appendChild(makeSVG(tag, attrs));
}

function TEST() {
appendSVG('pannel', 'path', {'id':'PID', 'd': 'M 0 0 L 100 100', 'stroke': '#000000' })
appendSVG('pannel', 'text', { 'id': 'TID', 'x': '5', 'fill': '#000000' })
appendSVG('TID', 'textPath', { 'xlink:href': '#PID', 'id':'TPath' })
$('#TPath').append('TEXT');
}

我在页面上有一个 SVG 元素“面板”。问题是 - 它不起作用

在 html 文件中编写的相同代码可以正常工作。

你可以看看我说的例子here

(按“测试”按钮创建与顶部相同的 svg(除了 ids =)))

最佳答案

您不能使用 setAttribute 在非空命名空间中创建属性,但这正是您在创建 xlink:href 属性时试图做的事情。

xlink:href 属性必须通过 setAttributeNS 创建,即

el.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', attrs[k]);

关于javascript - SVG,当我动态创建文本时,文本不会在 textPath 上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com