2012-02-14 29 views
16

Tôi đang cố gắng để thêm một yếu tố văn bản đến các yếu tố <g> trong một tài liệu SVG sử dụng javascript mã của tôi trông như thế nàythêm chữ vào tài liệu SVG trong 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'));} 

nhưng khi tôi chạy nó văn bản là không được hiển thị. phần tử được thêm vào phần tử <g>, nhưng giá trị không được đặt .. bất kỳ ý tưởng nào để giải quyết vấn đề này ??

Trả lời

40

Tôi nghĩ bạn cần tạo một nút văn bản để giữ chuỗi và nối thêm vào phần tử văn bản 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ó ví dụ làm việc tại http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/.

+0

Tôi đã xác minh rằng điều này là chính xác. (Sử dụng createTextNode.) Nên được đánh dấu là câu trả lời. –

+1

Tôi tự hỏi tại sao họ làm cho nó trở nên phức tạp thực sự – 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

Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự hữu ích để cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Ngoài ra, hãy cố gắng không gắn mã của bạn với các nhận xét giải thích vì điều này làm giảm khả năng đọc của cả mã và giải thích! – FrankerZ

+0

cảm ơn bạn đã giải quyết được sự cố đơn giản –

Các vấn đề liên quan