RaphaelJS: изменение атрибутов переменной, если найдено из хеша страницы - PullRequest
0 голосов
/ 22 августа 2011

Скажите, у меня есть var mycircle = paper.circle(0, 0, 20).attr({stroke: "#ff0000"});

Теперь по умолчанию, когда кто-то заходит на мою страницу в www.url.com/index.html, он получает этот круг с красным штрихом.

Однако, что, если я хотел ход по кругу, чтобы измениться, если #hash был определен при просмотре, например выбор был сделан, и вы хотели связать его с кем-то. Скажи кому-нибудь просматривает www.url.com/index.html#mycircle сейчас.

С помощью: var hash = window.location.hash.substr(1) Я могу сделать хэш переменной, возвращающий «mycircle».

Однако, делая hash.attr({stroke: "#0000ff"}); цвет обводки не изменится на синий! Есть ли способ обойти это, чтобы я мог изменить ход круга следующим образом?

// РЕДАКТИРОВАТЬ

Я настроил свои круги так:

var name1 = paper.circle(....);
name1.node.id = "name1";
name1.node.name = "Name";

var name2 = paper.circle(....);
name2.node.id = "name2";
name2.node.name = "Another Name";

и так далее. Затем я объединил их в набор:

nodes = paper.set();
nodes.push(name1, name2, name3, name4....);

Затем я использую nodes.hover(function() { }); и nodes.click(function() { }); для определения действий. name.node.id используется для загрузки нужной информационной страницы в div, в то время как name.node.name появляется над узлом, когда пользователь наводит на него курсор.

Я попытался реорганизовать свои узлы в соответствии с предложением:

var mapObjects = {};

mapObjects['name1'] = paper.circle(....);
mapObjects['name1'].node.id = "name1";
mapObjects['name1'].node.name = "Name";

mapObjects['name2'] = paper.circle(....);
mapObjects['name2'].node.id = "name1";
mapObjects['name2'].node.name = "Another Name";

Затем я попытался использовать функции, как и раньше, просто изменив узлы в mapObjects mapObjects.hover(function() { });, то же самое с щелчком мыши. Это больше не работает! Техника хеширования работала так, что это шаг в правильном направлении. Как мне теперь настроить функции наведения и нажатия?

1 Ответ

1 голос
/ 22 августа 2011

Эвал поможет, но будет очень уязвим.Лучше всего запомнить круг в ассоциативном массиве:

var objects = {};
objects['mycircle'] = paper.circle(0, 0, 20).attr({stroke: "#ff0000"});
objects[hash].attr({stroke: "#0000ff"});
...