2012-01-05 52 views
3

我的畫布上有很多rects。在頁面上有多個對象的情況下更改單個RaphaelJS對象上的筆觸屬性

我想改變用戶點擊任何內容的筆畫,以及運行其他JavaScript。我的簡化代碼如下。

var canvas = Raphael("test"); 
var st = canvas.set(); 

for (var i = 0; i < 2; i++) { 
    var act = canvas.rect(///edited for brevity////).attr({"stroke":"none"}); 
    st.push(act) 

    act.node.onclick = function() { 
     st.attr({stroke: "none"}); 
     act.attr({stroke: "yellow"}); 
    } 
} 

現在,不管我點擊矩形什麼,它只是改變在最後繪製的矩形行程。

任何想法?

回答

3

不是拉斐爾問題,而是缺乏理解。輕鬆可固定自行調用函數:

for (var i = 0; i < 2; i++) { 
    var act = canvas.rect(///edited for brevity////).attr({"stroke":"none"}); 
    st.push(act) 


    (function (act) { 
     act.node.onclick = function() { 
      st.attr({stroke: "none"}); 
      act.attr({stroke: "yellow"}); 
     } 
    })(act); 
} 
+0

謝謝,分類對我來說。 – 2012-01-06 19:17:02

0

//嘗試,然後美化

st[i].click(function (e) 
{ 
    this.attr({stroke: "yellow"}); 

}

相關問題