Как я могу зациклить функцию, изменяющую переменную каждый раз, когда она зацикливается, пока все переменные не используются? - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу зациклить функцию, изменяющую переменную каждый раз, когда она запускается, пока все переменные не будут использованы.В настоящее время я дублирую эту функцию более 20 раз, заменяя «a_week» для каждого.

var a_week = "yes";
var b_week = "no";
var c_week = "yes";

function onload() {
    if a_week = "yes" {
        document.getElementById("dot").classList.add('open');

    }
    else if a_week = "no" {
        document.getElementById("dot").classList.add('closed');

    }
}

1 Ответ

0 голосов
/ 02 апреля 2019

Я бы сделал массив ваших недель, заставил бы вашу 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
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...