我试图通过使用getById()函数获取Raphaël对象,但无论我尝试什么,该函数都返回null。
这是我正在使用的RaphaëlJS代码:
// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);
var circle = paper.circle(100, 100, 100);
circle.attr({"fill": "#f00", "id": "test"});
circle.data("id", "test");
var getCircle = paper.getById("test");
alert(getCircle); //Returns null?
为什么paper.getById("test");
没有返回圆圈对象?
我已使用attr()
和data()
定义了ID,但似乎没有任何效果。
上述代码的JsFiddle:http://jsfiddle.net/Mf9q6/
答案 0 :(得分:2)
仔细阅读documentation:
通过内部 ID返回元素。
这与元素上的id
属性不同。 Paper.getById()
预期的ID为Element.id
你可能想要var getCircle = paper.getById(circle.id);
,它只是对circle
的同一个对象的引用。
答案 1 :(得分:1)
如果我正确理解了您的问题,那么您正尝试将id
设置为您的元素。然后在线下的某处得到元素的id。
如果是这样,那么你几乎就在那里:
// Creates canvas 320 × 200 at 10, 50
var paper = Raphael(10, 50, 320, 200);
var circle = paper.circle(100, 100, 100);
circle.attr({"fill": "#f00", "id": "test"});
circle.data("id", "test");
var getCircle = circle.data("id");
alert(getCircle); //Returns test
修改强>
如果您尝试按值获取圆圈,就像您的示例“test”
一样paper.forEach(function (el)
{
if (el.data("id") == "test")
// return el - do what you want
});