animate и переменная
Всем привет!Работаю сейчас над созданием небольшой векторной карты...
Но речь пойдет о ней только лишь косвенно. Карта прорисована при помощи замечательной библиотеки Raphael. Объектам Path привязан обработчик события Hover. Вот тут по подробней: -При нажатии заношу в переменную cvet значение изначального цвета. -Проверяю alert'ом шестнадцетиричный код цвета выводиться нормально. -Подставляю в функцию animate эту переменную и ничего не происходит :cray: Что я делаю не правильно? И как в таких случаях находят выход из положения?
obj
.hover(function(){
var cvet = this.attr('fill');/*заносим в переменную НАЧАЛЬНЫЙ ЦВЕТ*/
alert(cvet);/*алертом выводиться этот цвет*/
this.animate({
fill: '#52B800'
}, 300);
}, function(){
this.animate({
fill:cvet /*ставим эту переменную сюда и ничего не происходит*/
}, 300);
})
З.Ы. вот ссылка на живой пример http://gerozp.com/map/index.html |
"Uncaught ReferenceError: cvet is not defined "
Ребят, пользуйтесь встроенными средствами хрома или же просто проверяйте js код, на каком-нибудь js-lint ресурсе. переменная cvet у тебя определена только в первой функции от .hover, вынеси её выше |
И всё равно накосячил =). Забыл закрыть твою вкладку, сейчас посмотрел - увидел. У тебя же наверно цвет обратно должен был возвращаться. Просто убери var из части
.hover(function(){
var cvet = this.attr('fill'); //вот в этой строке vfr убери и всё будет как надо
this.animate({
fill: '#52B800'
}, 300);
|
все равно не работает
var cvet;
obj
.hover(function(){
var cvet = this.attr('fill');
this.animate({
fill: '#52B800'
}, 300);
}, function(){
alert(cvet);
this.animate({
fill:cvet
}, 300);
});
|
Я же тебе говорю - убери var из этого места:
.hover(function(){
var cvet = this.attr('fill'); //вот в этой строке var убери и всё будет как надо
this.animate({
fill: '#52B800'
}, 300);
короче правильный код вот скопируй и вставь:
.hover(function(){
cvet = this.attr('fill');
this.animate({
fill: '#52B800'
}, 300);
}, function(){
alert(cvet);
this.animate({
fill:cvet
}, 300);
})
|
Из всего этого я делаю один вывод: если перменной в функции присвоено одно значение, то в другой функции этого значения НЕ БУДЕТ.
|
я по другому сделал но сечас попробую твой способ
|
Ух ты!!! Ваш код работает. Спасибо =) Я понял свою ошибку
|
Но будь осторожен, такой код очень нестабилен. Попробуй быстро мышкой по участкам поводить и заметишь, что переменная не успевает меняться и срабатывать для всех полей. Поэтому твой тот способ был лучше, когда ты цвет из массива брал, но с красными ячейками он почему не работал
|
Цитата:
|
| Часовой пояс GMT +3, время: 04:36. |