Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript One Solution

Template Literals WorkShop

function createPlanetHTML(planet) {
 return `
<div class="card"> 
          <div>
            <img src="img/planet.name.jpg" alt="planet.name">
          </div> 
          <h2> ${ planet.name}  </h2> 
          <p>${planet.description } </p> 
          <h3>Planet Profile</h3> 
          <ul> 
            <li><strong>Diameter: </strong> ${planet.diameter}</li> 
            <li><strong>Moons: </strong> ${ planet.moons} </li> 
            <li><strong>Temperature: </strong> ${ planet.temp} </li> 
            <li><strong>Orbit Period: </strong>${ planet.orbitDays} days ${planet.orbitYears}   years </li> 
          </ul> 
          <p> ${planet.facts}  </p> 
        </div>;
`
}

why this we didnt put template literals before <h3> ???

3 Answers

Chris Jones
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Chris Jones
Java Web Development Techdegree Graduate 23,920 Points

Hi Mahmoud,

You could certainly put the placeholders before the h3 element if you wanted to. The h3 element is just static text that shows the "Planet Profile" area of the web page.

In other words, it's just personal preference :).

I hope that helps! Let me know if you have any more questions!

thanks chris :) ,but aint we concatenating all of html tags in the html and returning it so we should have interpolated the tag <h3> right ??

Chris Jones
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Chris Jones
Java Web Development Techdegree Graduate 23,920 Points

Not a problem, Mahmoud!

I reworded my answer to make it clearer. The entire HTML string that your function is returning is the template literal. Below is the first sentence of the Template Literals MDN article:

Template literals are string literals allowing embedded expressions. 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

Therefore, the h3 element is part of the template literal. The placeholders (the ${}) are where the planet properties are inserted via interpolation. So, the h3 element is not being interpolated, it's static text in the template literal.

Does that help answer your question? Let me know if I didn't understand your question!

do u mean by static that its value doesnt change ?? thats why we enclose all of the planet properties with the dollar sign because properties can have many values ??

Chris Jones
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Chris Jones
Java Web Development Techdegree Graduate 23,920 Points

The template literal as a whole is dynamic because of the placeholders, the ${}, but the h3 element in particular is static since there are no placeholders in that element.

Does that help clarify?

yeah thanks chris it is great