Javascript .onmousedown在页面加载时执行

Javascript .onmousedown在页面加载时执行,javascript,jquery,d3.js,onmousedown,Javascript,Jquery,D3.js,Onmousedown,我试图在单击不同的多边形时显示不同的图形。但该函数在页面加载时执行,即使我将其定义为.onmousedown。 这就是函数 function iscrtaj(data, arg) { alert(arg); var barwidth = 13; var w = 700; var h = (barwidth + 10) * data.length; var xscale = d3.scale.linear() .domain([0, d3.

我试图在单击不同的多边形时显示不同的图形。但该函数在页面加载时执行,即使我将其定义为.onmousedown。 这就是函数

function iscrtaj(data, arg) {
    alert(arg);
    var barwidth = 13;
    var w = 700;
    var h = (barwidth + 10) * data.length;

    var xscale = d3.scale.linear()
        .domain([0, d3.max(data, function (d) {
            return d.bodovi;
        })])
        .rangeRound([0, 280]);

    var yscale = d3.scale.linear()
        .domain([-1, data.length])
        .range([0, h]);

    var bargraph = d3.select("body")
        .append("svg")
        .attr("width", w)
        .attr("height", h);

    svg.selectAll("rect")
        .data(data)
        .enter()
        .append("rect")
        .attr("x", 870)
        .attr("y", function (d, i) {
            return yscale(i);
        })
        .attr("height", barwidth)
        .attr("width", width).transition().duration(1000)
        .attr("width", function (d) {
            return xscale(d.bodovi);
        })
        .attr("fill", "blue");

    svg.selectAll("text")
        .data(data)
        .enter()
        .append("text")
        .attr("x", function (d) {
            return xscale(d.bodovi) + 910;
        })
        .attr("y", function (d, i) {
            return yscale(i);
        })
        .attr("dx", barwidth / 2)
        .attr("dy", "0.8em")
        .attr("text-anchor", "end")
        .attr("style", "font-weight: bold; font-size: 11; font-family: Helvetica, sans-serif")
        .text(function (d) {
            return d.bodovi + " %";
        })
        .style("fill", "black");

    svg.selectAll("text.xaxis")
        .data(data)
        .enter()
        .append("text")
        .attr("x", 830)
        .attr("y", function (d, i) {
            return yscale(i) + barwidth - 2;
        })
        .attr("dx", -barwidth / 2)
        .attr("text-anchor", "end")
        .attr("style", "font-size: 12; font-family: Helvetica, sans-serif")
        .text(function (d) {
            return d.stranka;
        })
        .attr("transform", "translate(20, 0)")
        .attr("class", "xaxis")
        .attr("fill", "black");
}
以及JSFIDLE上的其余代码。这里的弹出窗口只是为了确保函数采用了正确的参数。

立即调用函数,如果函数将绑定到事件,则调用结果/返回

.on("mousedown",function(){iscrtaj(data1, 5);})
使用这样的匿名函数可能会解决您的问题,数据的范围和生存期可能会对此产生影响

立即调用函数,如果函数将绑定到事件,则调用结果/返回

.on("mousedown",function(){iscrtaj(data1, 5);})

使用这样的匿名函数可能会解决您的问题,数据的范围和生存期可能会对此产生影响。

或者在ES5上,使用Functionbind,它可以为非常旧的引擎进行多填充:。onmousedown,iscrtaj.bindnull,data1,5@T.J.Crowder当然最近我一直在广泛使用bind,尤其是在使用famo.us库之后。或者在ES5上,使用Functionbind,它可以为非常旧的引擎进行多填充:。onmousedown,iscrtaj.bindnull,data1,5@T.J.Crowder当然,最近我一直在广泛使用bind,尤其是在与famo.us图书馆合作之后。