2013-03-24 3 views
0
document.createSvg = function(tagName) { 
    var svgNS = "http://www.w3.org/2000/svg"; 
    return this.createElementNS(svgNS, tagName); 
}; 

var svgPie = document.createSvg("svg"); 
metric_name = document.createSvg("g"); 


text_metric = document.createSvg("text"); 
text_metric.appendChild(document.createTextNode(data[i]['name'])); 
text_metric.setAttribute("name",data[i]['name']); 
text_metric.setAttribute("text-anchor","start"); 
text_metric.setAttribute("font-size","13"); 
text_metric.setAttribute("id", data[i]['id']); 

resetList = document.getElementsByTagName("text"); 

alert(resetList[0]); 

metric_name.appendChild(text_metric); 
svgPie.appendChild(metric_name); 

Выше предупреждения дает мне неопределенное. Можете привести причину и решение проблемы?document.getElementsByTagName ("svg_text") не работает

+0

Ну, в Chromium 24 (Ubuntu 12.10), я получаю: ['Uncaught TypeError: Object # не имеет метода 'createSVG''] (http://jsfiddle.net/davidThomas/3r6FQ/) Это может быть важно и, вероятно, стоит проверить ошибки в вашей собственной консоли JavaScript. Кстати, использование 'createSvg' (как в вашем собственном коде) генерирует ту же ошибку ([хотя и с другим корпусом, очевидно] (http://jsfiddle.net/davidThomas/3r6FQ/1/)). –

+0

'document.createSVG (...)' не является встроенной функцией, возвращает ли 'alert (text_metric)' то, что вы ожидаете? – Duopixel

+0

@Chirag: добавьте этот код в свой * вопрос *, код (почти полностью) не читается в комментариях. Можете ли вы воспроизвести свою проблему ([minimum/SSCCE] (http://sscce.org/)) в [JS Fiddle demo] (http://jsfiddle.net/)? –

ответ

2

Выполняется document.getElementsByTagName('text'), не добавляя SVG в DOM, поэтому результат всегда пуст.

Вы можете сделать ...

document.body.appendChild(svgPie); 
resetList = document.getElementsByTagName("text"); 
alert(resetList[0]); 

И это будет работать.