ThomasM: SVG Objekte mit js ansprechen

Beitrag lesen

Hallo mr_sol,

Hier sieht man das Problem besser. Es gibt 2 Instanzen von c1. (uc1,uc2) ich möchte unabhängig bei beiden die Farbe verändern.

Alternativer Vorschlag über verschiedene Symbole und Austausch der use-Referenzen statt der Farben selbst:

<?xml version="1.0" encoding="UTF-8"?>  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:xlink="http://www.w3.org/1999/xlink">  
<head>  
<title>SVG use test</title>  
<script type="text/javascript">  
  
 [code lang=javascript] var xlinkns = "http://www.w3.org/1999/xlink";  
  var f_vs_id = {'green' : '#c1', 'yellow' : '#c2', 'red' : '#c3'};  
  
  function setUsedFill(uId, fill) {  
    document.getElementById(uId).setAttributeNS(xlinkns, 'href', f_vs_id[fill]);  
  }

</script>
</head>
<body>
<div>
<input type="button" value="test" onclick="setUsedFill('uc1', 'yellow');"/>
<input type="button" value="test" onclick="setUsedFill('uc2', 'red');"/>
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">
  <defs>
    <symbol id="c1">
      <circle cx="50" cy="50" r="30" fill="green"/>
    </symbol>
    <symbol id="c2">
      <circle cx="50" cy="50" r="30" fill="yellow"/>
    </symbol>
    <symbol id="c3">
      <circle cx="50" cy="50" r="30" fill="red"/>
    </symbol>
  </defs>
  <use id="uc1" x="0" y="0" xlink:href="#c1"></use>
  <use id="uc2" x="100" y="100" xlink:href="#c1"></use>
</svg>
</div>
</body>
</html>[/code]

Grüße,
Thomas