0

jsを使用して20個のパス塗りつぶしの色を変更し、すべて同じクラスを持つ埋め込みSVGがあります。

<script>
function svgMod(){  
    //var links = document.getElementById("tornado5").getSVGDocument().
    //    getElementsByClassName('SVGlogo');
    var links = document.getElementById("tornado5").contentDocument.
        getElementsByClassName('SVGlogo');

    for (var i=0;i<links.length;i++) { links[i].style.fill="00ff00"; }  
}
</script>
<object type="image/svg+xml" id="tornado5" data="bitmaps/frames/tornado2.svg">
</object>        <!-- cant use img -->
<button onclick="svgMod();" >Click to change</button>

Chrome では動作しますが、Firefox では動作しません。contentDocument と getSVGDocument() の両方を試しましたが、役に立ちませんでした。Firefoxでもlinks.lengthは20なので、問題はlinks[i].style.fillにあるようです

何か案は?

4

1 に答える 1

1

この行を変更してみてください:

for (var i=0;i<links.length;i++) { links[i].style.fill="00ff00"; } 

これに:

for (var i=0; i < links.length; i++) {
    links[i].setAttribute("fill", "#00ff00");
} 

また

for (var i=0; i < links.length; i++) {
    links[i].style.fill = "#00ff00";
} 

お役に立てれば。

于 2013-01-02T06:45:18.143 に答える