Я практикую JavaScript на своей личной странице, и у меня возникают проблемы с # четвертой страницей (портфолио). По сути, я хочу, чтобы, когда я нажимал на Веб-дизайн, он отображал вещи в class = "tab1-content", если я нажимал на Games, он отображал фотографии, связанные с этим div (под class = "tab3-content), если это Имеет смысл. Я прикрепил JSFiddle (некоторые картинки отсутствуют, потому что idk загружает картинки.
Моя логика довольно длинная, поэтому лучше бы оценить и лучшую.
Вот моя логика:
обратите внимание, что у меня есть идентификатор с именем "current-tab", который окрашивает выбранную вкладку в зеленый цвет.
По сути, при каждом нажатии я удаляю этот идентификатор из каждого элемента вкладки, а также удаляю содержимое каждой вкладки, устанавливая для дисплеев tab1-content tab2-content tab3-content и tab4-content ни одно. Затем я поставил удостоверение личности там, где и должно быть. Однако я не могу понять, как отобразить правильное содержание вкладки, которое мне нужно. Пожалуйста, помогите?
Я уверен, что есть лучший способ сделать это
var tab1 = document.querySelector("#homepage #fourth-page .portfolio-container .tab1");
var tab2 = document.querySelector("#homepage #fourth-page .portfolio-container .tab2");
var tab3 = document.querySelector("#homepage #fourth-page .portfolio-container .tab3");
var tab4 = document.querySelector("#homepage #fourth-page .portfolio-container .tab4");
var tabs = document.querySelector("#homepage #fourth-page .portfolio-container .tabs");
var tabLinks = tabs.getElementsByTagName("a"); // Array
var temp = document.querySelector("#homepage #fourth-page .portfolio .tab-content-wrap");
var tabContents = temp.getElementsByClassName("tab-content");
// Initially, Web Design is green
console.log("testing");
tab1.setAttribute("id", "current-tab");
// If I click one, hide the other ones
// Adding individual listening events
tab1.addEventListener("click", showContent);
tab2.addEventListener("click", showContent);
tab3.addEventListener("click", showContent);
tab4.addEventListener("click", showContent);
function showContent() {
console.log("executing function");
// give it #current tab, remove previous
// display its content, remove other one
for (let i = tabLinks.length - 1; i >= 0; i--) {
tabLinks[i].removeAttribute("id");
tabContents[i].style.cssText = "display: none";
}
this.setAttribute("id", "current-tab");
}