2012-02-14 8 views
16

Sto cercando di aggiungere un elemento di testo per l'elemento <g> in un documento SVG utilizzando JavaScript il mio codice è simile al seguenteAggiunta di testo a documento SVG in 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'));} 

ma quando l'eseguo il testo è non mostrato. l'elemento si aggiunge all'elemento <g>, ma il valore non è impostato .. tutte le idee su come risolvere questo ??

risposta

40

penso che è necessario creare un nodo di testo per contenere la stringa e aggiungere che, per l'elemento di testo 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); 

C'è un esempio di lavoro a http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/.

+0

Ho verificato che questo è corretto. (Utilizzando createTextNode.) Dovrebbe essere contrassegnato come risposta. –

+1

Mi chiedo perché rendono così complicato davvero – 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

Anche se questo frammento di codice potrebbe risolvere la questione, [tra cui una spiegazione] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) aiuta veramente per migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. Cerca anche di non affollare il tuo codice con commenti esplicativi, in quanto ciò riduce la leggibilità sia del codice che delle spiegazioni! – FrankerZ

+0

grazie per aver risolto il problema semplicemente –

Problemi correlati