Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript DOM Scripting By Example Improving the Application Code Fix Function that Should be Creating Links

Bummer! The links are showing up, but they are not siblings of the headline elements, and they should be. Make sure the

Hello

My index.html

<!DOCTYPE html>
<html>
<head>
    <title>Programming Languages</title>
    <style>
        body {
            font-family: sans-serif;
        }
    </style>
</head>
<body>
<h1>Programming Languages</h1>
<section></section>
<script src="app.js"></script>
</body>
</html>

My app.js

const languages = ['Python', 'JavaScript', 'PHP', 'Ruby', 'Java', 'C'];
const section = document.getElementsByTagName('section')[0];

// Accepts a language name and returns a wikipedia link
function linkify(language) {
    const a = document.createElement('a');
    const url = 'https://wikipedia.org/wiki/' + language + '_(programming_language)';
    a.href = url;
    return a;
}

// Creates and returns a div
function createDiv(language) {
    const div = document.createElement('div');
    const h2 = document.createElement('h2');
    const p = document.createElement('p');
    const link = linkify(language);

    h2.textContent = language;
    p.textContent = 'Information about ' + language;
    link.appendChild(p);

    div.appendChild(h2);

    // Your code below

    h2.appendChild(link);

    // end

    return div;
}

for (let i = 0; i < languages.length; i += 1) {
    let div = createDiv(languages[i]);

    section.appendChild(div);
}

but I keep getting this error:

Bummer! The links are showing up, but they are not siblings of the headline elements, and they should be. Make sure the 

event though I checked the DOM in Chrome Developer tools, and the link is definitely a child of h2 element

Am I misreading the requirement?

Thank you for your help.

app.js
const languages = ['Python', 'JavaScript', 'PHP', 'Ruby', 'Java', 'C'];
const section = document.getElementsByTagName('section')[0];

// Accepts a language name and returns a wikipedia link
function linkify(language) {
  const a = document.createElement('a');
  const url = 'https://wikipedia.org/wiki/' + language + '_(programming_language)';
  a.href = url;
  return a;
}

// Creates and returns a div
function createDiv(language) {
  const div = document.createElement('div');
  const h2 = document.createElement('h2');
  const p = document.createElement('p');
  const link = linkify(language);

  h2.textContent = language;
  p.textContent = 'Information about ' + language;
  link.appendChild(p);

  div.appendChild(h2);

  // Your code below
    h2.appendChild(link);

  // end

  return div;
}

for (let i = 0; i < languages.length; i += 1) {
  let div = createDiv(languages[i]);

  section.appendChild(div);
}
index.html
<!DOCTYPE html>
<html>
<head>
  <title>Programming Languages</title>
  <style>
    body {
      font-family: sans-serif;
    }
  </style>
</head>
<body>
  <h1>Programming Languages</h1>
  <section></section>
  <script src="app.js"></script>
</body>
</html>

1 Answer

Hi,
you're so close, you just need to replace the "h2" by div, remember it says (Make sure the links are the last element children of the divs)

h2.appendChild(link); // Make sure the links are the last element children of the divs

so we need something like this

div.appendChild(link);

Hi

Thanks. It seems that the word 'headings' in the challenge threw me off. Thank you for the help.