我是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 - 错误:尝试使用拉斐尔获取元素位置时,this.attr不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9905012/

10-15 03:20