javascript - 尝试使用 Raphael 获取元素的位置时出现错误 : this. attr 不是函数

标签 javascript raphael

我是 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/

相关文章:

javascript - 在另一个文件中执行内联 javascript

javascript 函数不可见?不会再被叫第二次

javascript - onselectionchange 更新时变量不更新

javascript - 重新排列 javascript 对象 - 使用 .sort() 的键不会保留在正在排序的数组上

javascript - gRaphael 中是否可以获取 X 轴偏移或填充?

javascript - 垂直反转 Raphael SVG 形状不起作用

javascript - 整数加 1;每1秒

javascript - 如何使用 Raphael .animateWith()

javascript - 更改 parallax.js 中的视差图像

javascript - 从多个api获取数据