d3.select(this).attr()get Undefined

时间:2015-12-03 09:39:30

标签: javascript d3.js

当我使用拖动事件时,我尝试使用d3.js select()来获取Html属性中的id。 但不知道为什么我在我的控制台中获得null,但其他类似的代码是工作

这是我的代码: 1.HTML

<g transform="translate(765,407)" fill="black"><circle r="15" class="sNodes" id="node_id31" onclick="NodesDown(31)" style="stroke: rgb(41, 194, 244); stroke-width: 5px;"></circle><text dx="-20" dy="50" id="node_id31">1255</text></g>

2.JS

var drag = d3.behavior.drag()
.on('dragstart', function (d) {
    d3.select(this).attr('fill', 'black');
})
.on('drag', function (d) {
    d3.select(this).attr("transform", "translate(" + d3.event.x + "," + d3.event.y + ")");
})
.on('dragend', function (d) {
    var id = d3.select(id).attr("id"); //this not work
var trans = d3.select(this).attr("transform"); //this work
});

更新: 仍然无效。

改变:

 .on('dragend', function (d) {
        var id = d3.select(id).attr("id"); //this not work
    var trans = d3.select(this).attr("transform"); //this work
    });

为:

.on('dragend', function (d) {
    var id = d3.select(this).attr("id"); //this not work
var trans = d3.select(this).attr("transform"); //this work
});

1 个答案:

答案 0 :(得分:0)

dragend出错。尝试用它替换它。

.on('dragend', function (d) {
    var id = d3.select(this).attr("id"); 
    var trans = d3.select(this).attr("transform"); 
});