说我有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)
我可以使变量hash返回“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() { });
,同样单击。这些不再适用了!散列技术起作用,这是向正确方向迈出的一步。如何让我的悬停和点击功能立即运行?
答案 0 :(得分:1)
eval会有所帮助,但它会非常脆弱。更好的方法是记住关联数组中的圆:
var objects = {};
objects['mycircle'] = paper.circle(0, 0, 20).attr({stroke: "#ff0000"});
objects[hash].attr({stroke: "#0000ff"});