2012-02-14 6 views
16

Я пытаюсь добавить текстовый элемент к <g> элемента в SVG документа с помощью JavaScript мой код выглядит как этотдобавление текста в SVG документа в JavaScript

function addText(x,y,val){ 
var newtxt = document.createElementNS("http://www.w3.org/2000/svg", "text"); 
$newtxt = $(newtxt); 
$newtxt.attr('x',x); 
$newtxt.attr('y',y); 
$newtxt.attr('font-size','100'); 
$newtxt.val(val); 

$newtxt.appendTo($('g'));} 

, но когда я запускаю его текст является не показано. элемент добавляется к элементу <g>, но значение не задано. любые идеи, как это решить ??

ответ

40

Я думаю, вам нужно создать текстовый узел для хранения строки и добавить ее в текстовый элемент SVG.

var newText = document.createElementNS(svgNS,"text"); 
newText.setAttributeNS(null,"x",x);  
newText.setAttributeNS(null,"y",y); 
newText.setAttributeNS(null,"font-size","100"); 

var textNode = document.createTextNode(val); 
newText.appendChild(textNode); 
document.getElementById("g").appendChild(newText); 

Рабочие примеры: http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/.

+0

Я проверял, что это правильно. (Использование createTextNode.) Должен быть помечен как ответ. –

+1

Интересно, почему они так усложняются? – FlorianB

2
var txt = document.createElementNS(svgNS, 'text'); 
txt.setAttributeNS(null, 'x', x); 
txt.setAttributeNS(null, 'y', y); 
txt.setAttributeNS(null,'font-size','100'); 
txt.innerHTML = val; 
document.getElementById("g").appendChild(txt); 
+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает для улучшения качества вашей должности. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, так как это уменьшает читаемость кода и объяснений! – FrankerZ

+0

спасибо за решение проблемы просто –

Смежные вопросы