Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите, мужики! Есть один скрипт и много кнопок с разными ID (https://javascript.ru/forum/misc/61242-pomogite-muzhiki-est-odin-skript-i-mnogo-knopok-s-raznymi-id.html)

Pobedill 10.02.2016 02:47

Помогите, мужики! Есть один скрипт и много кнопок с разными ID
 
Есть код кнопок (будет 1500 шт)
<span id="phone1" class="phone" onclick="this.style.display='none'; javascript:setrate(2)">+380 XXX XX XX</span>
<div id="phone1a" class="phone2">+380 111 11 11</div>

<span id="phone2" class="phone" onclick="this.style.display='none'; javascript:setrate(2)">+380 XXX XX XX</span>
<div id="phone2a" class="phone2">+380 222 22 22</div>

<span id="phone3" class="phone" onclick="this.style.display='none'; javascript:setrate(2)">+380 XXX XX XX</span>
<div id="phone3a" class="phone2">+380 333 33 33</div>


А вот скрипт для первой кнопки. Как не писать код 1500 раз?
<!--открыть контакты-->
  <script type="text/javascript">
$(document).ready(function() 
  {
  var flag=true;
  $("#phone1").click(function()
    {
      if(flag==true)
      {
        $("#phone1a").slideToggle();
        flag=!flag;
      }
  });
});
</script>

Спасибо заранее!

Pobedill 10.02.2016 05:17

Сделал так, но хочется меньше кода.
 
<!--открыть контакты-->
  <script type="text/javascript">
$(document).ready(function() 
  {
  var flag=true;
  $("#phone1").click(function()
    {
      if(flag==true)
      {
        $("#phone1a").slideToggle();
        flag=!flag;
      }
  });
});
$(document).ready(function() 
  {
  var flag=true;
  $("#phone2").click(function()
    {
      if(flag==true)
      {
        $("#phone2a").slideToggle();
        flag=!flag;
      }
  });
});
$(document).ready(function() 
  {
  var flag=true;
  $("#phone3").click(function()
    {
      if(flag==true)
      {
        $("#phone3a").slideToggle();
        flag=!flag;
      }
  });
});
$(document).ready(function() 
  {
  var flag=true;
  $("#phone4").click(function()
    {
      if(flag==true)
      {
        $("#phone4a").slideToggle();
        flag=!flag;
      }
  });
});
$(document).ready(function() 
  {
  var flag=true;
  $("#phone5").click(function()
    {
      if(flag==true)
      {
        $("#phone5a").slideToggle();
        flag=!flag;
      }
  });
});
</script>

рони 10.02.2016 08:53

Pobedill,
забить в поиск по форуму открывашка и найти более 200 вариантов решения вашей проблемы.
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Pobedill 10.02.2016 15:02

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

AciDWarrioR 10.02.2016 15:54

На сколько я понял у вас суть задачи такая: есть два номера, если флаг, установленный по каким то соображением, есть, показать один номер, если нет то другой. Что-то вроде такого. Так вот, мне кажется самое элементарное Jquery использовать не по id, а по классу. Допустим для всех номеров одного типа завести класс class1, а остальные class2. Мне кажется это будет проще.

Так у Вас даже уже классы есть. Используйте так:

$(document).ready(function()
  {
 var flag=true;
  $(".phone").click(function()
    {
      if(flag==true)
      {
        $(".phone2").slideToggle();
        flag=!flag;
      }
  });
});

Pobedill 10.02.2016 17:57

Спасибо за ответ. Применил ваш код. Убрал id.. Теперь при клике по первому номеру раскрываются второй и третий спойлер.
<div class="phone" onclick="this.style.display='none'; javascript:setrate(1)">+380 XXX XX XX</div>
<div class="phone2">+380 111 11 11</div>

<div class="phone" onclick="this.style.display='none'; javascript:setrate(2)">+380 XXX XX XX</div>
<div class="phone2">+380 222 22 22</div>

<div class="phone" onclick="this.style.display='none'; javascript:setrate(3)">+380 XXX XX XX</div>
<div class="phone2">+380 333 33 33</div>

Pobedill 10.02.2016 18:43

Помог другой спойлер

AciDWarrioR 10.02.2016 22:07

Pobedill,
Проблема решена?

Просто вы не описывали свою задачу конкретно, а спросили как избежать того, чтобы не писать скрипт 1500 тысячи раз.
Кстати, второй вариант для таких задач, создать цикл. Описываем функцию выполнения вашего скрипта, создаем цикл, пробегающим по всем кнопкам, в котором выполняется эта функция, но тут надо более конкретную постановку задачи, иначе может получится бяка.


Часовой пояс GMT +3, время: 12:28.