Я бы сделал массив ваших недель, заставил бы вашу onload
функцию принять аргумент и затем перебрал их.
const weeks = [true, false, false, true];
function onload(week) {
if(week) {
document.getElementById("dot").classList.add('open');
} else {
document.getElementById("dot").classList.add('closed');
}
}
weeks.forEach(onload);
Вы можете посмотреть документы на forEach
на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach.
Для каждой отдельной недели вы, возможно, не собираетесь менять один и тот же элемент HTML каждый раз. Приведенный выше код будет просто добавлять классы к тому же элементу #dot
. Если вы намеревались использовать несколько элементов, возможно, сохраните массив элементов или их селекторы. Или объединить это с данными в объекте, как мой старый ответ. Вы не поделились своей HTML-структурой, поэтому я не уверен, как лучше структурировать манипуляции с DOM.
Также onload
не является хорошим именем для функции, поскольку можно предположить, что она подключена к событию браузера onload .
Ответ на старый вопрос:
Похоже, вы должны сделать то, что sa_g_week
представляет объект, а затем перебрать их массив (или сделать из них карту / объект, если на них нужно ссылаться по ключу). Я не уверен, каков ваш контекст, но я собираюсь составить некоторые имена полей и предположить, что вы работаете с местоположениями.
const locations = [
{
isOpen247: true,
isPermanentlyClosed: false,
openTime: new Date(),
closeTime: new Date(),
},
{
isOpen247: true,
isPermanentlyClosed: true,
openTime: new Date(),
closeTime: new Date(),
},
];
Затем вы можете перебрать массив и сделать то, что вам нужно:
locations.forEach(location => {
if(location.isOpen247) {
// do stuff
} else {
// do other stuff
}
});