JS Смена текста в кнопке

223
16 февраля 2018, 17:43

Здравствуйте!

Подскажите пожалуйста как сменить текст в кнопке при клике на неё и с последующим возвратом текста после второго нажатия.

Прошу прощения за глупый вопрос, т.к. в JS я пока не разбирался.

P.S. На сайте используется фреймворк Bootstrap 4.

<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show"><span>Показать всё</span></button>

Answer 1

const btn = document.querySelector('.btn > span'); 
btn.addEventListener('click', function() { 
  btn.innerHTML = 
    (btn.innerHTML === 'Показать всё') ? btn.innerHTML = 'Скрыть всё' : btn.innerHTML = 'Показать всё'; 
})
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show"><span>Показать всё</span></button>

И второй вариант, если кнопка не первая или не единственная....

const btn = document.querySelectorAll('.btn > span'); 
for (let i = 0; i < btn.length; i++) { 
 
  btn[i].addEventListener('click', function() { 
    this.innerHTML = 
      (this.innerHTML === 'Показать всё') ? this.innerHTML = 'Скрыть всё' : this.innerHTML = 'Показать всё'; 
  }) 
 
}
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show"><span>Показать всё</span></button> 
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show_2"><span>Показать всё</span></button> 
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show_3"><span>Показать всё</span></button> 
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show_4"><span>Показать всё</span></button>

Answer 2

Ответы конечно уже даны, но пришло в голову забавное решение с jQuery :)))

$('button').click(function() 
{ 
  $('span').toggle(); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<button> 
  <span>Показать всё</span> 
  <span style="display:none">Вернуть назад</span> 
</button>

Answer 3

Подробней о text.

$("button").click(function() { 
  $(this).text(function(i, text) { 
    return text === "Показать всё" ? "Скрыть всё" : "Показать всё"; 
  }) 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button type="button" class="btn btn-outline-success" data-toggle="collapse" data-target="#services" id="show"><span>Показать всё</span></button>

READ ALSO
связать кнопку яндекс деньги с кнопкой публикации [требует правки]

связать кнопку яндекс деньги с кнопкой публикации [требует правки]

имеется кнопка яндекса для перевода суммы на кошелек, так же имеется кнопка публикации записи, как можно связать эти две кнопки, чтобы при...

179
Закрытые вкладки по умолчанию ui kit accordion

Закрытые вкладки по умолчанию ui kit accordion

По умолчанию в uikit accordion первая вкладка всегда открытаЕсть такой код

217
Будет ли сайт загружаться быстрее, если я уберу некий css элемент с помощью Stylish ?

Будет ли сайт загружаться быстрее, если я уберу некий css элемент с помощью Stylish ?

Для Youtube я убрала секцию неконструктивных (как это обычно бывает) комментариев этим кодом в расширении Stylish :

228
flexbox: контент overflow-ится при nowrap и выравнивании по центру

flexbox: контент overflow-ится при nowrap и выравнивании по центру

Обычная задача - выровнять 2 блока по центру страницыШирина блоков указана в единицах измерения vw

261