在dragstart事件中无法识别函数

时间:2015-08-12 08:57:24

标签: javascript

在html中没有在dragstart上调用函数getId。代码看起来简单而正确,我不确定为什么它没有被调用

HTML code:

<div id="content">
    <div style="position: relative; height: 100%;">
        <div style="display: inline-block; height: 100%; vertical-align: top; border-right: 2px solid darkcyan;" id="sidebar">
            <div><a id="newTask" title="Add new task" draggable="true" ondragstart=getId(this.id)><img src="task.png" /></a></div>
        </div>
<div id="canvas" tabindex="0"></div>
<div id="tabbar"></div>
    </div>
</div>

JS:

window.onload = function ()
{
    var svg = d3.select("body")
            .append("svg")
            .attr("width", 800)
            .attr("height", 803);

    function getId(id)
    {
        var shapeId = id;
        console.log(shapeId);
    }
};

它抛出错误说:Uncaught ReferenceError: getId is not defined

2 个答案:

答案 0 :(得分:0)

您已在getId函数中声明了onload函数 - 即它不在可以通过事件调用的范围内。

将其移到onload函数之外:

window.onload = function ()
{
    var svg = d3.select("body")
            .append("svg")
            .attr("width", 800)
            .attr("height", 803);


};

function getId(id)
{
    var shapeId = id;
    console.log(shapeId);
}

答案 1 :(得分:0)

试试这个:

window.onload = function ()
{
    var svg = d3.select("body")
            .append("svg")
            .attr("width", 800)
            .attr("height", 803);
};

    function getId(id)
    {
        var shapeId = id;
        console.log(shapeId);
    }

由于函数范围已定义,函数getId不可见。让它全球化。 (需要进一步重构)。