Надо сделать подобное. Я подобное сделал, но это получается говнокод какой-то и обслуживать его тоже вредно.
onst coise = {
category: '',
subcategory: '',
oneparams: '',
twoparams: '',
photo: ''
}
const categories = [
"Работа", "Транспорт", "Недвижимость", "Услуги", "Электроника"
];
const categoriesList = document.getElementsByClassName('categoryList')[0];
const imgStrelka = document.getElementsByClassName('imgStrelka')[0];
const categorie = {
"Работа": {
subcategory: {
title: "Выберите подкатегорию",
categorii: ["Вакансии", "Резюме", "Подработка"],
},
photo: {
title: "Загрузить изображение",
categorii: ["Выбрать", "Сфотографировать", "У меня нет фото"]
}
},
"Транспорт": {
subcategory: {
title: "Выберите подкатегорию",
categorii: ["Авто", "Мото", "Велосипеды"],
},
oneparams: {
title: "Какая марка?",
categorii: ["бмв", "ауди", "мерседес", "бентли", "лада"],
},
photo: {
title: "Загрузить изображение",
categorii: ["Выбрать", "Сфотографировать", "У меня нет фото"]
}
},
"Недвижимость": {
subcategory: {
title: "Выберите подкатегорию",
categorii: ["Квартира", "Дом", "Комната", "Гараж", "Земельный участок"]
},
oneparams: {
title: "Сколько комнат?",
categorii: ["Студия", "1", "2", "3", "4+"]
},
twoparams: {
title: "Какой этаж?",
categorii: ["1", "2", "3", "4", "5"]
},
photo: {
title: "Загрузить изображение",
categorii: ["Выбрать", "Сфотографировать", "У меня нет фото"]
}
},
"Услуги": {
subcategory: {
title: "Выберите подкатегорию",
categorii: ["Оказать услугу", "Требуется услуга"]
},
photo: {
title: "Загрузить изображение",
categorii: ["Выбрать", "Сфотографировать", "У меня нет фото"]
}
}
};
function addBoard(categor, tmp, title) {
createLiAppend(categor, title);
addEventClick(categor, tmp);
}
function createLiAppend(arr, title) {
for (let i=0; i < arr.length; i++) {
const li = document.createElement('li');
li.innerText = arr[i];
li.classList.add('categoryItem');
categoriesList.appendChild(li);
contentTitle.innerText = title;
}
}
/* удаляет все элементы li */
function deleteLi() {
categoriesList.innerHTML = ''
}
var contentTitle = document.getElementsByClassName('contentTitle')[0];
function addEventClick(arr, tmp) {
const li = document.getElementsByTagName('li');
for (let i = 0; i< arr.length; i++) {
li[i].addEventListener('click', function() {
if (tmp === 'Категория') {
contentTitle.innerText = "Категория";
coise.category = li[i].innerText;
deleteLi();
addBoard(categorie[coise.category].subcategory.categorii, 'Субкатегория', categorie[coise.category].subcategory.title);
}
else if (tmp === "Субкатегория") {
coise.subcategory = li[i].innerText;
deleteLi();
if (categorie[coise.category].oneparams === undefined) {
addBoard(categorie[coise.category].photo.categorii, 'Фото', categorie[coise.category].photo.title);
} else
addBoard(categorie[coise.category].oneparams.categorii, '1 параметр', categorie[coise.category].oneparams.title);
}
else if (tmp === '1 параметр') {
coise.oneparams = li[i].innerText;
deleteLi();
if (categorie[coise.category].twoparams === undefined) {
addBoard(categorie[coise.category].photo.categorii, 'Фото', categorie[coise.category].photo.title);
} else
addBoard(categorie[coise.category].twoparams.categorii, '2 параметр', categorie[coise.category].twoparams.title);
}
else if (tmp === '2 параметр') {
coise.twoparams = li[i].innerText;
deleteLi();
addBoard(categorie[coise.category].photo.categorii, 'Фото', categorie[coise.category].photo.title)
}
else if (tmp === 'Фото') {
if (li[i].innerText === 'У меня нет фото') window.location.reload();
}
})
}
}
Полностью затачивать под указанные Вами скриншоты не стал, но общую логику обрисовал.
let activeScreen = 0;
let screenValues = {};
const $screen = document.getElementById('screen');
const $screenOptions = document.getElementById('screen-options');
const $screenLabel = document.getElementById('screen-label');
// Список экранов и их параметров
let screens = [{
key: 'key1',
label: 'Заголовок 1',
options: [
{label: 'Параметр 1-1', value: 'value1-1' },
{label: 'Параметр 1-2', value: 'value1-2' },
//...
]
},{
key: 'key2',
label: 'Заголовок 2',
options: [
{label: 'Параметр 2-1', value: 'value2-1' },
{label: 'Параметр 2-2', value: 'value2-2' },
{label: 'Параметр 2-3', value: 'value2-3' },
//...
]
}];
// Функция обновления активного экрана
function updateScreen(screenIndex) {
// Переключаемся на следующий экран
activeScreen = screenIndex;
// Обновляем заголовок нового экрана
$screenLabel.innerText = screens[activeScreen].label;
// Обновляем параметры нового экрана
$screenOptions.innerHTML = '';
const options = screens[activeScreen].options;
for (const optionIndex in options) {
let $option = document.createElement('li');
$option.innerText = options[optionIndex].label;
$option.onclick = () => onSelectScreenOption(optionIndex);
$screenOptions.appendChild($option);
}
}
// Событие выбора параметра активного экрана
function onSelectScreenOption(optionIndex) {
const activeScreenData = screens[activeScreen];
const selectedOption = activeScreenData.options[optionIndex];
// Сохраняем значение выбранного параметра
screenValues[activeScreenData.key] = selectedOption.value;
if (activeScreen + 1 === screens.length) {
// Выбор параметров завершен
// Скрываем экран
$screen.style.display = 'none';
// Все значения экранов хранятся в объекте screenValues
console.log(screenValues);
} else {
updateScreen(activeScreen + 1);
}
}
updateScreen(0); // Показваем первый экран
<div id='screen'>
<h2 id='screen-label'></h2>
<ul id='screen-options'></ul>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста, есть вот файл configjs в нем экспортируемая переменная с ссылкой на API, но есть API для dev версии, а есть отдельное API для prod версии,...
Я делаю свое собственное расширение Chrome на JS, поэтому, мне нaдo получать куки с нужного сайтаНо я не знаю, какой метод мне использовать
Как сделать такую подсветку как например у нас на stackoverflow?