我是 Rapahel 新手,我试图获取单击元素时的位置。请找到下面的代码片段。它给我一个错误,说 this.attr 不是函数。我确实我做错了,请指教。
<html>
<head>
<title>Raphael Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="raphael.js"></script>
</head>
<body>
<script type="text/javascript">
window.onload = function initPage() {
var paper = new Raphael(document.getElementById('holder'), 1200, 500);
var nodeHeader = paper.rect(100,100,150,50,10);
nodeHeader.attr({
gradient: '90-#6BAA3A-#409400',
stroke: '#6BAA3A',
'stroke-width': 1,
cursor: "move"
});
nodeHeader.node.id='nodeHeader';
nodeHeader.node.onclick = function(){
alert(this.attr('x'));
};
};
</script>
<div id="holder"></div>
</body>
</html>
最佳答案
事件上下文中的“this”对象为您提供 DOM 节点,而不是包裹它并包含 Raphael 功能的 Element 对象。您可以重复使用之前在创建时声明的 Element 变量,也可以通过 ID 动态检索 Element 对象:
nodeHeader.node.onclick = function(){
// Re-use previous variable
alert(nodeHeader.attr("x"));
// Retrieve dynamically via ID
alert(paper.getById("nodeHeader").attr("x"));
};
关于javascript - 尝试使用 Raphael 获取元素的位置时出现错误 : this. attr 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905012/