2013-07-01 3 views
2

지도에 Raphael.js를 사용하려고합니다. 지도 외부의 버튼을 클릭하여 상태 집합을 다른 색으로 만들 수있게하려고합니다. 나는 잠시 jsfiddle (아래 참조)을 조정하려고 시도했지만 작동시키지 못했습니다. 내가 뭘 놓치고 있니?Raphael.js Click 이벤트

HTML

<button id="show">Show</button> 

JS

var paper = Raphael(10, 50, 960, 560); 
var attr = {fill: 'blue', 
stroke: '#000', 
'stroke-width': 5, 
cursor: 'pointer'}; 

var elementSet = paper.set(); 
var cn = {}; 
    cn.a = paper.path("M339.098,175.503c0,0-55.555,58.823-16.34,75.163s227.451,49.02,227.451,49.02s67.321-25.49,47.713-50.98s-71.896-78.432-71.896-78.432L339.098,175.503z").attr(attr); 
    cn.b = paper.path("M548.902,306.876c0,0-209.15-32.026-228.758-46.405s-27.451-27.451-20.262-42.484s26.797-44.444,26.797-44.444l-41.83-86.928l-76.471,77.125c0,0-25.49,169.935,48.366,171.242s292.157-4.575,292.157-4.575V306.876z").attr(attr); 
    cn.c = paper.path("M296.614,86.614l38.562,83.66l194.771-7.843l75.817,81.7c0,0,130.066-84.967,73.203-118.301S503.15,48.706,463.935,51.974S296.614,86.614,296.614,86.614z").attr(attr); 

elementSet.push(cn.a, cn.b); //define what is in the set 


$('#show').on('click', function() { 
    elementSet.animate({ 
      fill: '#000' 
    }, 500); 
}); 

JS 바이올린은 here이다.

+0

, 당신은 단지 JSfiddle에 코드를 테스트? 그렇다면 Prototype 또는 jQuery와 같은 라이브러리가로드되어 있지 않으므로 코드에서 '$'을 평가할 수 없습니다. – FredericK

+0

좋은 지적입니다. 감사합니다 –

답변

5

대신이 시도 제안 해 주셔서 감사합니다 :

현재
var paper = Raphael(10, 50, 960, 560); 
var attr = { 
    fill: 'blue', 
    stroke: '#000', 
     'stroke-width': 5, 
    cursor: 'pointer' 
}; 

var elementSet = paper.set(); 
var cn = {}; 
cn.a =  paper.path("M339.098,175.503c0,0-55.555,58.823-16.34,75.163s227.451,49.02,227.451,49.02s67.321-25.49,47.713-50.98s-71.896-78.432-71.896-78.432L339.098,175.503z").attr(attr); 
cn.b = paper.path("M548.902,306.876c0,0-209.15-32.026-228.758-46.405s-27.451-27.451-20.262-42.484s26.797-44.444,26.797-44.444l-41.83-86.928l-76.471,77.125c0,0-25.49,169.935,48.366,171.242s292.157-4.575,292.157-4.575V306.876z").attr(attr); 
cn.c = paper.path("M296.614,86.614l38.562,83.66l194.771-7.843l75.817,81.7c0,0,130.066-84.967,73.203-118.301S503.15,48.706,463.935,51.974S296.614,86.614,296.614,86.614z").attr(attr); 

elementSet.push(cn.a, cn.b); //define what is in the set 

var button = document.getElementById('show'); 

button.onclick = function() { 
    elementSet.animate({ 
     fill: '#000' 
    }, 500); 
}; 
+0

이것은 완벽하게 작동합니다. 고맙습니다!!! –

+0

대답은 인정 될 것이다 :) – FredericK