📖 Scenario: You are creating a simple product list for an online store. Each product needs to store extra information like its ID and category without showing it directly on the page.
🎯 Goal: Build an HTML page with a list of products. Each product item should use data- attributes to store its id and category. This helps keep extra info in the HTML that can be used later by scripts or styles.
📋 What You'll Learn
Create an unordered list with three product items.
Each product item must have data-id and data-category attributes with exact values.
Use semantic HTML5 elements.
Ensure the HTML is valid and accessible.
💡 Why This Matters
🌍 Real World
Data attributes are used in real websites to store extra info on elements that JavaScript or CSS can use without cluttering the visible content.
💼 Career
Knowing how to use data attributes helps you build interactive and maintainable web pages, a common skill needed for front-end web development jobs.
Progress0 / 4 steps
1
Create the HTML skeleton with a product list
Write the basic HTML5 structure with lang="en" in the <html> tag. Inside the <body>, create a <main> element containing an unordered list <ul> with three list items <li>. Each list item should have the product names: "Laptop", "Smartphone", and "Headphones" exactly as text content.
HTML
Hint
Remember to use the <ul> tag for the list and <li> tags for each product name inside the <main> section.
2
Add data attributes for product ID
Add a data-id attribute to each <li> with these exact values: "101" for Laptop, "102" for Smartphone, and "103" for Headphones.
HTML
Hint
Use the data-id attribute inside each <li> tag with the exact numbers given.
3
Add data attributes for product category
Add a data-category attribute to each <li> with these exact values: "computers" for Laptop, "phones" for Smartphone, and "audio" for Headphones.
HTML
Hint
Add the data-category attribute next to data-id inside each <li> tag with the exact category names.
4
Add an accessible heading and finalize the page
Add a heading <h1> inside the <main> before the product list with the exact text "Available Products". This helps screen readers understand the page content.
HTML
Hint
Place the <h1> heading inside <main> before the <ul> list with the exact text.
Practice
(1/5)
1. What is the main purpose of data- attributes in HTML?
easy
A. To change the color of HTML elements
B. To store extra information inside HTML elements without affecting their appearance
C. To create links between pages
D. To add comments inside HTML code
Solution
Step 1: Understand what data attributes do
Data attributes store extra information inside HTML elements without changing how they look on the page.
Step 2: Compare options with this purpose
Only To store extra information inside HTML elements without affecting their appearance describes storing extra info without affecting appearance, which matches the purpose of data attributes.
Final Answer:
To store extra information inside HTML elements without affecting their appearance -> Option B
Quick Check:
Data attributes store extra info = B [OK]
Hint: Data attributes always start with 'data-' and hold extra info [OK]
Common Mistakes:
Thinking data attributes change element style
Confusing data attributes with links or comments
Believing data attributes are visible on the page
2. Which of the following is the correct way to add a data attribute to a <div> element?
easy
A.
B.
C.
D.
Solution
Step 1: Recall the correct syntax for data attributes
Data attributes must start with 'data-' followed by a name using hyphens, not underscores or camelCase.
Step 2: Check each option
uses 'data-user' which is correct. Options A, B, and C use invalid formats like missing 'data-', underscores, or camelCase.
Final Answer:
<div data-user="123"></div> -> Option D
Quick Check:
Correct data attribute syntax = D [OK]
Hint: Data attributes start with 'data-' and use hyphens, not underscores [OK]
What will button.dataset.action return in JavaScript?
medium
A. "save"
B. "Save"
C. "data-action"
D. undefined
Solution
Step 1: Understand how dataset works in JavaScript
The dataset property accesses data attributes by their name after 'data-' in camelCase. Here, 'data-action' becomes 'action'.
Step 2: Check the value of data-action attribute
The attribute value is "save" (all lowercase), so button.dataset.action returns "save" exactly.
Final Answer:
"save" -> Option A
Quick Check:
dataset.action returns attribute value = A [OK]
Hint: dataset.property matches data-attribute name after 'data-' [OK]
Common Mistakes:
Confusing attribute value case
Trying to access with full 'data-action' name
Expecting undefined if attribute exists
4. Identify the error in this HTML snippet:
<span data-user_id="7">User</span>
medium
A. The attribute name uses an underscore instead of a hyphen
B. The value '7' should be in single quotes
C. The <span> tag cannot have data attributes
D. Missing closing tag for <span>
Solution
Step 1: Check data attribute naming rules
Data attribute names must use hyphens, not underscores, after 'data-'. Underscores are invalid.
Step 2: Verify other parts of the code
The value can be in double or single quotes, <span> can have data attributes, and the closing tag is present.
Final Answer:
The attribute name uses an underscore instead of a hyphen -> Option A
Quick Check:
Data attribute names use hyphens, not underscores = C [OK]
Hint: Data attribute names must use hyphens, never underscores [OK]
Common Mistakes:
Using underscores in data attribute names
Thinking quotes must be single
Believing some tags can't have data attributes
5. You want to store a user's preferred language and theme inside a <section> element using data attributes. Which of these is the best and valid way to do it?
hard
A.
B.
C.
D.
Solution
Step 1: Recall correct data attribute naming conventions
Data attributes must start with 'data-' and use hyphen-separated lowercase names.
Step 2: Evaluate each option
uses correct 'data-preferred-language' and 'data-theme'. Options B and C use invalid camelCase or underscores. misses 'data-' prefix.
Final Answer:
<section data-preferred-language="en" data-theme="dark"></section> -> Option C
Quick Check:
Valid data attributes start with 'data-' and use hyphens = A [OK]
Hint: Use 'data-' prefix and hyphens for multiple words in attribute names [OK]
Common Mistakes:
Using camelCase or underscores in data attribute names
Omitting the 'data-' prefix
Trying to store data without data attributes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.