scrimba
Space Travel Site
The tabs
Changing the image
Go Pro!Bootcamp

Bootcamp

Study group

Collaborate with peers in your dedicated #study-group channel.

Code reviews

Submit projects for review using the /review command in your #code-reviews channel

AboutCommentsNotes
Changing the image
Expand for more info
tabs.js
run
preview
console
const tabList = document.querySelector('[role="tablist"]');
const tabs = tabList.querySelectorAll('[role="tab"]');

tabList.addEventListener('keydown', changeTabFocus);

tabs.forEach((tab) => {
tab.addEventListener('click', changeTabPanel);
});


let tabFocus = 0;
function changeTabFocus(e) {
const keydownLeft = 37;
const keydownRight = 39;

if (e.keyCode === keydownLeft || e.keyCode === keydownRight) {
tabs[tabFocus].setAttribute("tabindex", -1);
}

if (e.keyCode === keydownRight) {
tabFocus++;
if (tabFocus >= tabs.length) {
tabFocus = 0;
}
}

if (e.keyCode === keydownLeft) {
tabFocus--;
if (tabFocus < 0) {
tabFocus = tabs.length - 1;
}
}

tabs[tabFocus].setAttribute("tabindex", 0);
tabs[tabFocus].focus();
}


function changeTabPanel(e) {
const targetTab = e.target;
const targetPanel = targetTab.getAttribute("aria-controls");

const tabContainer = targetTab.parentNode;
const mainContainer = tabContainer.parentNode;

mainContainer
.querySelectorAll('[role="tabpanel"]')
.forEach((panel) => panel.setAttribute("hidden", true));

mainContainer.querySelector([`#${targetPanel}`]).removeAttribute('hidden');


// console.log(mainContainer);
}
Console
/destination.html
-5:28