2012-02-14 16 views
16

Estoy tratando de añadir un elemento de texto al elemento <g> en un documento SVG usando javascript mi código es el siguienteañadir texto al documento SVG en 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'));} 

pero cuando lo ejecuto el texto es no mostrada. el elemento se agrega al elemento <g>, pero el valor no está establecido .. alguna idea de cómo resolver esto ??

Respuesta

40

Creo que necesita crear un nodo de texto para contener la cadena y anexarla al elemento de texto 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); 

Hay un ejemplo de trabajo en http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/.

+0

He verificado que esto es correcto. (Usando createTextNode.) Debe marcarse como la respuesta. –

+1

Me pregunto por qué lo hacen tan complicado realmente – 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

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda para mejorar la calidad de tu publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. Por favor, intente no saturar su código con comentarios explicativos, ya que esto reduce la legibilidad tanto del código como de las explicaciones. – FrankerZ

+0

gracias por resolver el problema simplemente –

Cuestiones relacionadas