Jestem bardzo zdezorientowany. Mam statyczny element SVG, który wyświetla się dobrze, ale gdy dodaję identyczny element z JavaScript, to nie wyświetla się. Dlaczego to??dynamiczny element svg dodany przez JavaScript nie działa
<html>
<head>
\t <script type="text/javascript">
\t function doit()
\t \t {
\t \t \t var svgdiv = document.getElementById('svg1');
\t \t \t for (var k = 1; k < 3; ++k)
\t \t \t {
\t \t \t \t var svg = document.createElement('svg');
\t \t \t \t svg.setAttribute('width',100);
\t \t \t \t svg.setAttribute('height',100);
\t \t \t \t console.log(svg);
\t \t \t \t var c = document.createElement('circle');
\t \t \t \t c.setAttribute('cx',50);
\t \t \t \t c.setAttribute('cy',50);
\t \t \t \t c.setAttribute('r',40);
\t \t \t \t c.setAttribute('stroke','green');
\t \t \t \t c.setAttribute('stroke-width',4);
\t \t \t \t c.setAttribute('fill','yellow');
\t \t \t \t svg.appendChild(c);
\t \t \t \t svgdiv.appendChild(svg);
\t \t \t }
\t \t }
\t \t window.onload = doit;
\t </script>
</head>
<body>
\t <svg width="100" height="100">
\t <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
\t </svg>
<div id="svg1"></div>
</body>
</html>
dziwne. Dlaczego pojawia się wtedy pierwsze koło? Nie mam żadnego odniesienia do przestrzeni nazw SVG. –
Pojawia się pierwsze kółko, ponieważ przeglądarka wie, jakiej przestrzeni nazw użyć, gdy znajdzie element '' wewnątrz elementu ''. Ma kontekst. Wywołanie "createElement (" circle ")' z definicji tworzy nowy element w "domyślnej" przestrzeni nazw, która dla przeglądarki jest HTML - nie SVG. –