Hi,
Ich hab mich heute mal in Javascript versucht, allerdings nur mit mäßigem Erfolg. Vor allem der Firefox braucht vielleicht ein etwas weniger fehlerhaften Code. Laut DOM Inspector werden die mit appendChild erzeugen Kreise auch an die richtige Stelle eingefügt, nur ein getElementById gibt nur noch ein
Fehler: uncaught exception: [Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMSVGSVGElement.getElementById]" nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)" location: "JS frame :: /*...*//test2.svg :: update :: line 14" data: no]
aus. wenn alles funktioniert, müsste ein roter kreis an position 100;390 auftauchen, wenn zeite 14 nicht geht müsste der kreis zumindest an position 0;390 sein, er ist aber gar nicht da - wieso? Mit der Exception kann ich wenig anfangen. Opera und Konqueror machen keine Probleme.
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ev="http://www.w3.org/2001/xml-events"
version="1.1" baseProfile="full"
width="300" height="300" viewBox="-10 -10 420 420" onload="init(evt)" >
<defs>
<script type="text/ecmascript"><![CDATA[
var svgdoc,svgroot;
var ary = new Array(40);
function update()
{
var circle = "ci0";
svgroot.getElementById(circle).setAttribute("cx" ,100); //line 14
}
function init(load_evt)
{
svgdoc=load_evt.target.ownerDocument;
svgroot=svgdoc.documentElement;
var newCircle = document.createElement("circle");
newCircle.setAttribute("id" ,"ci0");
newCircle.setAttribute("cx" ,0);
newCircle.setAttribute("cy" ,390);
newCircle.setAttribute("r" ,5);
newCircle.setAttribute("fill" , "#ff0000");
newCircle.setAttribute("stroke-width" , "3px");
svgroot.appendChild(newCircle);
update();
}
]]></script>
</defs>
</svg>