Add Labels to D3 Elements - Getting Error

Tell us what’s happening:

Your code so far


<body>
  <script>
    const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];
    
    const w = 500;
    const h = 100;
    
    const svg = d3.select("body")
                  .append("svg")
                  .attr("width", w)
                  .attr("height", h);
    
    svg.selectAll("rect")
       .data(dataset)
       .enter()
       .append("rect")
       .attr("x", (d, i) => i * 30)
       .attr("y", (d, i) => h - 3 * d)
       .attr("width", 25)
       .attr("height", (d, i) => 3 * d)
       .attr("fill", "navy");
    
    svg.selectAll("text")
       .data(dataset)
       .enter()
       // Add your code below this line
       .attr("x",(d, i)=> i*30)
       .attr("y", (d, i) => h - 3 * d -3)
       .text( (d) => d)
       
       
       
       // Add your code above this line
  </script>
<body>

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36.

Link to the challenge:

// running tests Response

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

this.setAttribute is not a function

you are missing the text nodes, this line of the instructions:

First, append text nodes to the svg .

So you are adding the attributes to nothing, and this.setAttribute is not a function because probably this is undefined or something like that (and this should be the node that doesn’t exist) - I don’t know much of the inner workings, but it is usually something like that with this error

1 Like

It worked, Thank you so much :slight_smile: