我使用Snap.svg加载SVG图像并向其添加文本元素。但是,我需要能够在页面加载时更新文本元素。
现在,我正在做这样的事情:
var svg = Snap("#selector");
var text;
Snap.load(path_to_file, function(f) {
svg.append(f);
var g = svg.select("g");
text = g.text(x_pos, y_pos, label);
}
我想说我想稍后更新文字,我该怎么做?我保证在调用text
后创建load
对象后对其进行更新。
我设法修改文本的唯一方法是将id
设置为元素,然后使用jQuery执行此操作:
self.selector.find("#my_id")[0].textContent = "New text";
然而,这感觉非常错误,我想我可能只是缺少使用Snap API的东西。
答案 0 :(得分:24)
我认为它应该像
一样简单text.attr({ text: 'my new text'});
所以
setTimeout( function() { text.attr({ text: 'my new text'}) }, 2000 );
会测试它
答案 1 :(得分:3)
另一种方法,你可以使用Element.node
直接获取DOM节点的引用,这样你就可以搞乱了
text.node.textContent = "New text";
text.node.innerHTML = "New text";
text.node.innerHTML = 'a<tspan dy="5">2</tspan>'
答案 2 :(得分:0)
使用jquery
$(s.select('#id').node).text('new text');