D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
Fil
Full window
Github gist
events and ES6 arrow functions [UNLISTED]
Built with
blockbuilder.org
<!DOCTYPE html> <head> <meta charset="utf-8"> <script src="https://d3js.org/d3.v4.min.js"></script> <style> body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } </style> </head> <body> <script> // Feel free to change or delete any of the code you see in this editor! var svg = d3.select("body").append("svg") .attr("width", 960) .attr("height", 500) // With regular functions I use _this_ to react to an event svg.selectAll('text') .data([1,2]) .enter() .append("text") .text((d) => "hover me " + d) .attr("y", (d,i) => 110 + 50 * i) .attr("x", 120) .style("font-size", 36) .style("font-family", "monospace") .on('mousemove', function() { d3.select(this) .text(Math.random()).attr('fill', 'blue') } ); // With arrow functions, _this_ is not available, and I need to add an id svg.selectAll('text') .data([1,2,3,4]) .enter() .append("text") .attr('id', (d,i) => "data-" + i) .text((d) => "hover me " + d) .attr("y", (d,i) => 130 + 50 * i) .attr("x", 120) .style("font-size", 36) .style("font-family", "monospace") .on('mousemove', (d,i) => svg.select("#data-" + i) .text(Math.random()).attr('fill', 'green') ); // d3.event.target to the rescue svg.selectAll('text') .data([1,2,3,4,5,6]) .enter() .append("text") .text((d) => "hover me " + d) .attr("y", (d,i) => 150 + 50 * i) .attr("x", 120) .style("font-size", 36) .style("font-family", "monospace") .on('mousemove', () => d3.select(d3.event.target) .text(Math.random()).attr('fill', 'red') ); </script> </body>
https://d3js.org/d3.v4.min.js