SVG-Element springt durch die Gegend
svgPaule
- javascript
Hallo,
fährt der Mauszeiger über die SVG-Gruppe id="actionEvent", sollte die Gruppe mit seinen enthaltenen Elementen etwas grösser werden und das Zentrum auf der gleichen Position bleiben. Wird der Mauszeiger aus der SVG-Gruppe gezogen, soll diese ihre Ursprungsgestalt wieder haben.
Und das ganze, wenn es ginge, mit Batik und Netscape-Rhino (hab'ich spass).
Leider springt die SVG-Gruppe wild durch die Gegend:-( Was mach ich falsch?
<?xml version="1.0" standalone="yes"?>
<svg contentScriptType="text/ecmascript" width="1400" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="full" zoomAndPan="magnify" contentStyleType="text/css" height="946" viewBox="0 0 1400 946" preserveAspectRatio="xMidYMid" xmlns="http://www.w3.org/2000/svg" version="1.0">
<!--|Definition ANFANG +-->
<defs>
<script type="text/ecmascript"><![CDATA[
function toggleColor(event, targetID)
{
var eventType = event.getType();
var svgObj = document.getElementById(targetID);
var childs = svgObj.getChildNodes();
switch(eventType){
// Die Gruppe id="actionEvent" soll groesser werden
case "mouseover":
svgObj.setAttributeNS(null, 'transform', 'scale(0.7,0.7)');
for (var i=0; i<childs.getLength(); i++){
if (childs.item(i).getNodeType() == 1){
var x = childs.item(i).getAttributeNS(null, 'x');
var y = childs.item(i).getAttributeNS(null, 'y');
childs.item(i).setAttributeNS(null, 'x', x/0.7*0.5);
childs.item(i).setAttributeNS(null, 'y', y/0.7*0.5);
}
else
if (childs.item(i).getNodeType() == 3){
var x = childs.item(i).getAttributeNS(null, 'x');
var y = childs.item(i).getAttributeNS(null, 'y');
childs.item(i).setAttributeNS(null, 'x', x/0.7*0.5);
childs.item(i).setAttributeNS(null, 'y', y/0.7*0.5);
}
}
break;
// Die Gruppe id="actionEvent" soll kleiner werden
case "mouseout":
svgObj.setAttributeNS(null, 'transform', 'scale(0.5,0.5)');
for (var i=0; i<childs.getLength(); i++){
if (childs.item(i).getNodeType() == 1){
var x = childs.item(i).getAttributeNS(null, 'x');
var y = childs.item(i).getAttributeNS(null, 'y');
childs.item(i).setAttributeNS(null, 'x', x/0.5*0.7);
childs.item(i).setAttributeNS(null, 'y', y/0.5*0.7);
}
else
if (childs.item(i).getNodeType() == 3){
var x = childs.item(i).getAttributeNS(null, 'x');
var y = childs.item(i).getAttributeNS(null, 'y');
childs.item(i).setAttributeNS(null, 'x', x/0.5*0.7);
childs.item(i).setAttributeNS(null, 'y', y/0.5*0.7);
}
}
break;
case "mousedown":
break;
default:
break;
}
}
]]></script>
</defs>
<g id="picture">
<g onmouseover="toggleColor(event, 'actionEvent')" transform="scale(0.5,0.5)" style="cursor:pointer;" onmouseout="toggleColor(event, 'actionEvent')" id="actionEvent" onmousedown="toggleColor(event, 'actionEvent')" onmouseup="toggleColor(event, 'actionEvent')">
<circle cx="570" cy="485" r="30" style="fill:rgb(255,0,0);"/>
<circle cx="570" cy="485" r="15" style="fill:rgb(255,255,0);"/>
<text x="569" y="491" style="fill: black; text-anchor: middle; vertical-align:middle; cursor:pointer; font-family:arial; font-size: 12pt;">001</text>
</g>
</g>
</svg>