Изменение атрибута обводки для одного объекта RaphaelJS, когда на странице несколько объектов - PullRequest
3 голосов
/ 06 января 2012

У меня на холсте целая куча цитат.

Я бы хотел изменить обводку на любом прямоугольнике, который нажимает пользователь, а также запустить какой-нибудь другой 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"});
   }   
}

Прямо сейчас, независимо от того, на каком прямоугольнике я щелкаю, он только меняет штрих на последнем нарисованном прямоугольнике.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Не проблема Рафаэля, а скорее отсутствие понимания замыканияЛегко может быть исправлено функцией самовоспроизведения:

0 голосов
/ 06 января 2012

// Попробуй и укрась

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

}

...