2014-03-26 110 views
0

我有法國的SVG地圖在我的網頁,每個區是多邊形的,我需要的是,當我點擊一個區的顏色變化,並保持下去,直到我再次點擊SVG改變多邊形顏色的onclick

這是我的代碼

function init(evt) { 
    if (window.svgDocument == null) { 
     svgDoc = evt.target.ownerDocument; 
    } 

function update(district){ 
    $(this).find("path, polygon, circle").attr("fill", "#0d0");<- what is wrong 
    } 

這是我的多邊形

<path id="14" d="M82.387,173.009L109.168,141h2.42l3.33-5.965l20.425,8.818l5.296,0.475l- 
1.876,31.861l5.236,7.5v8.018 l-15.6-1.701l 
0.273-3.599C128.127,186.407,99.635,180.95,82.387,173.009z" fill="#CCCCCC" 
onclick="update('14')"> 

,你可以看到即時得到onclick事件的問題是我不能得到的多邊形來改變顏色之一。

在此先感謝。

+0

你可以創建一個JSFiddle嗎? –

+0

我不知道如何創建一個SVG文件的JSFiddle,我知道問題很簡單,只是如何改變多邊形路徑的顏色 – notforever

+0

你可以檢查一下你的這個包含了什麼?它可能已經包含了路徑標記。因此,如果您在路徑標記上查找,它會查找路徑的子節點,並且什麼也找不到 –

回答

2
  1. 檢查這是什麼。一個console.log(這個)會讓你的生活變得更加容易
  2. 我會回答1.當調用一個函數時,這將指向窗口對象。所以做一個$(this).attr將在窗口對象中找到屬性,而不是在你期望的對象中。
  3. 由於您在該函數中傳遞了對象ID,因此可以使用它在文檔中查找元素。你可以這樣做:

    $('#'+ubicacion).attr("fill","blue") 
    

小提琴here

+0

美麗,如此簡單,謝謝 – notforever