3.8 KiB
3.8 KiB
title
title |
---|
Work with Data in D3 |
Work with Data in D3
Remember to use
Read-Search-Ask
if you get stuck. Try to pair program and write your own code
Problem Explanation:
This challenge uses the select
, selectAll
, append
, and text
methods seen in previous challenges. It adds 2 new D3 methods: data
and enter
to target the given data and display an element on the page for each datum
Relevant Links
From the official D3 documentation:
Hint: 1
- After selecting the correct HTML nodes, use the
data
method with thedataset
variable passed as an argument to make the D3 object aware of the data
try to solve the problem now
Hint: 2
- Use the
enter
method to ensure that your HTML document has enough elements of the type you specified inselectAll
for each datum
try to solve the problem now
Hint: 3
- Now that the D3 object is aware of your data and has created enough elements for each datum,
append
the elements of the specified type and add thetext
required in the instructions
try to solve the problem now
Spoiler Alert!
Solution ahead!
Basic Code Solution:
<body>
<script>
const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];
d3.select('body').selectAll('h2')
.data(dataset)
.enter()
.append('h2')
.text('New Title');
</script>
</body>
Code Explanation:
d3
targets the D3 objectselect('body')
is used toselect
the 'body' element of the HTML documentselectAll('h2')
is used toselectAll
of the 'h2' elements that are children to 'body'data(dataset)
calls the D3data
method and uses the given dataset as an argumententer()
uses the D3enter
method to check the current number of elements selected and create any missing ones according to the amount needed by the datasetappend('h2')
takes these newly created elements fromenter
and ensures they are created as 'h2' elementstext('New Title')
changes the text of every element selected to 'New Title'- The dataset contains 9 datum, so the final solution should show 9 'h2' elements with the text 'New Title'