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, время: 10:53. |