2013-01-02 41 views
0

我有一個嵌入式SVG,使用js更改20種路徑填充顏色,全部具有相同的類。firefox js getSVGDocument()。getElementsByClassName('myClass')破?

<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(),但沒有幫助。 links.length是20,即使在Firefox中,所以問題似乎在鏈接[i] .style.fill

任何想法?

+0

這個webkit bug本應在3月份修復。 https://bugs.webkit.org/show_bug.cgi?id=46112我不知道修復漏洞需要多長時間才能加入Chrome,但我很驚訝,因爲他們的快速發佈時間表無效顏色仍然可以接受。 –

+1

正如Tanzeel Kazi所說,問題在於你的「fill」值是無效的CSS。有效的值是'#00ff00'。 –

回答

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"); 
} 

OR

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

希望這有助於。

+0

既可以工作,謝謝!忘了'#'呵呵。謝謝。 – dako