Проверьте массив на наличие включенных кнопок и создайте имена для каждого, которые являются «истинными»

#javascript #jquery

#javascript #jquery

Вопрос:

Я не уверен, что заголовок соответствует моим потребностям, но я надеюсь, что он будет близок к тому, что мне действительно нужно.

Итак, я создаю один небольшой плагин для личного использования, и мне интересно, как быстро создать «X» количество кнопок, в зависимости от того, сколько социальных кнопок мне понадобится к тому времени.

На данный момент это три кнопки, но я могу включить или отключить их по желанию, как и в каждом плагине.

Итак, мне интересно, как я могу узнать, какая кнопка включена или отключена пользователем в плагине, а затем создать разные действия кнопки и текст кнопки для каждого.

Вот пример того, что у меня есть, и я просто хочу создать точный текст для каждой включенной кнопки.

 var socialsCount = 0,
    socials = [this.options.facebookButton, this.options.twitterButton, this.options.googleButton];


for (i = 0; i < socials.length; i  ) {
    if (socials[i] === true) {
        socialsCount  ;
    }
}

for (i = 0; i < socialsCount; i  ) {
    $("<button />", {
        type: "button",
        class: "just some classes",
        text: 'Make button names '   i
    }).appendTo(".vsd-body");
}
  

Таким образом, в этом случае он проверит, какие кнопки являются истинными, и создаст необходимое количество «кнопок». Допустим, в этом случае «facebookButton и googleButton» имеют значение «true», а «twitterButton» имеет значение «false».

Как я могу установить «текст: создать имена кнопок» i прямо там, чтобы создать имена для каждой включенной кнопки.

Примеры: facebookButton — «facebook» twitterButton — «twitter» googleButton — «google»

Надеюсь, вы поняли мой вопрос. Мне нужен любой ответ!

Комментарии:

1. Не ответ, но i нигде не определен, что делает его глобальным при его использовании. Также слово class является зарезервированным словом, поэтому заключите его в кавычки.

2. @AdamMerrifield — Спасибо за ответ. «i» — это просто цикл для добавления числа 🙂 Спасибо за упоминание, я помещу его в кавычки.

3. В i том-то и дело, что это просто для цикла, поэтому оно не должно быть глобальной переменной. Вам нужно определить его локально, чтобы он использовался там

Ответ №1:

Используйте массив объектов

 var options = {
   buttons:[
      { enabled:true, label:"Facebook" },
      { enabled:false, label:"Twitter" },
      { enabled:true, label:"Google" }
   ]
};

for(var i=0; i<options.buttons; i  ){
   if(options.buttons[i].enabled){
      $("<button />", {
          type: "button",
          class: "just some classes",
          text: options.buttons[i].label
      }).appendTo(".vsd-body");  
   }
}
  

Комментарии:

1. Похоже, это сделает именно то, что мне нужно. Спасибо за ответ.