var selectionRect; svg .on( "mousedown", function() { var p = d3.mouse(this); //console.log(p); svg.append( "rect") .attrs({ rx : 6, ry : 6, class : "selection", x : p[0], y : p[1], width : 0, height : 0 }); //console.log(svg.select( "rect")) }) .on( "mousemove", function() { var s = svg.select( "rect.selection"); if( !s.empty()) { var p = d3.mouse( this), d = { x : parseInt( s.attr( "x"), 10), y : parseInt( s.attr( "y"), 10), width : parseInt( s.attr( "width"), 10), height : parseInt( s.attr( "height"), 10) }, move = { x : p[0] - d.x, y : p[1] - d.y } ; if( move.x < 1 || (move.x*2= selectionRect.x && nodes[i].attributes.cx.value <= (selectionRect.x + selectionRect.width) && nodes[i].attributes.cy.value >= selectionRect.y && nodes[i].attributes.cy.value <= (selectionRect.y + selectionRect.height)){ d3.select(nodes[i]).classed("selected", true); selectedNodes.push(nodes[i]); } } console.log(selectedNodes); } }); function clicked(){ /* d3.select(this).attr('r', 25) .style("fill","lightcoral") .style("stroke","red");*/ d3.select(this).classed("selected", !d3.select(this).classed("selected")); if(d3.select(this).classed("selected")){ selectedNodes.push(this); }else{ selectedNodes.splice(selectedNodes.indexOf(this), 1); } console.log(selectedNodes); }