Skip to content
This repository has been archived by the owner on Aug 2, 2023. It is now read-only.

alchemycodelab/display-a-list-practice

Repository files navigation

Display a list practice

The goal here is to help you see web development the way experienced developers do: as a series of finite and repeatable tasks.

There are only so many things we do in an app.

Here is a list of the 10 major plain JavaScript patterns.

Let's practice the 'display a list' and 'render function' patterns.

Scoring rubric: 2.5 point for each array displayed to the page.

Goal

Render 4 separate lists of things to the same index.html file. Minimally,

  1. One list should be a list of string,

  2. One should be a list of simple objects,

  3. One should be a list of objects where one property is a nested object,

  4. Another list of of simple objects, or

    • STRETCH: A list of objects where one property is an array. This means that you need to render a sub-list for each item in the main list!

Setup

Start with the list practice template repo.

Process

Repeat the following process 4 times, with 4 different domains, all in the same repo

Note: do this process one array at a time. Do not write 4 arrays, then 4 render functions, etc. Work through the first array, then the first render function, then the first display function.

Come up with a domain for this data (lie 'dogs' or 'candies'). Let's assume you picked 'candies' for your list of simple objects

1) Data

Rename array-one.js to candies-data.js. In that data file:

  • Create an exported variable with an array of at least 3 objects for that domain
  • Each object should have at least 3 properties (unless you are doing the string list)
  • Objects in the array should all have the same properties

For example:

export const candies = [
    {
        name: 'Twix',
        flavor: 'chocolate caramel',
        type: 'candy bar',
    },
    {
        name: 'Bubblicious',
        flavor: 'strawberry watermelon',
        type: 'gum',
    },
    {
        name: 'Smarties',
        flavor: 'tart fruity',
        type: 'waffers',
    },
];

2) HTML

In index.html:

  • Rename the header to your domain, e.g. <h2>Candies</h2>
  • Rename the id of your list container, e.g. <ul id="candy-list"></ul>
  • Design how the <li> element will look, so you have a target for the render function. Simple is best for this exercise!
    <h2>Candies</h2>
    <ul id="candy-list">
        <li class="candy-item">
            <h2>Twix</h2>
            <p>chocolate caramel candy bar</p>
        </li>
    </ul>

3) Render Function

Rename render-one.js to render-candy.js file for your candy array

  • Write an exported render function with a name like renderCandy that accepts one object and returns DOM elements.
  • This function should return an <li> element with a css class of candy-item.
  • Create a minimum of two child elements (h2, span, p etc.) and use the object properties to correctly populate those elements
export function renderCandy(candy) {
    const li = document.createElement('li');
    li.classList.add('candy-item');

    const headerEl = document.createElement('h2');
    headerEl.textContent = candy.name;

    const pEl = document.createElement('p');
    pEl.textContent = candy.flavor + ' ' + candy.type;

    li.append(headerEl, pEl);

    return li;
}

4) Display Function

In app.js:

  • import both your array and render function
  • Grab the list element from the DOM. (getElementById)
  • Rename the display function from displayOne to displayCandies
  • In this function, loop through your array, and for each object:
    • render a candy element using the render function
    • append the element to the list element you grabbed from the DOM

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published