@mishapsv

Почему не происходит замена текста при нажатии?

Здесь код.

Скрипт должен обрезать текст отзывов, если он больше определенного значения и менять текст "скрыть"/ "подробнее" (в диве reviews__more).
Но при клике на этот блок текст не меняется, хотя в консоли это изменение показывается.
Подскажите, в чем проблема?
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@S3Ga
Ошибка в функции toogle1, у вас в contentReview хранится массив элементов, вы пытаетесь применить к нему свойство innerHTML, но это свойство должно применяться конкретно к элементу. Как вариант :
(function() {
	var contentReview = document.querySelectorAll('.reviews__text');
	var moreBtnReview = document.querySelectorAll('.reviews__more');
	var num = 120;
	for (var i = 0; i < contentReview.length; i++) {
		var bigTextReview = contentReview[i].innerHTML;

		var cutTextReview = bigTextReview.slice(0, num);

		moreBtnReview[i].style.display = 'none';
		if (bigTextReview.length > num) {
			moreBtnReview[i].style.display = '';
		  var vis = false;
			var toggle1 = function(key) {
          console.log(key);
		      if (!vis) {
		        contentReview[key].innerHTML = cutTextReview;
		        moreBtnReview[key].textContent = 'Подробнее';
		        vis = true;
		      } else {
		        contentReview[key].innerHTML = bigTextReview;
		        moreBtnReview[key].textContent = 'Скрыть';
		        vis = false;
		      }
		  };
		  moreBtnReview[i].addEventListener('click', function(key){return function(){toggle1(key);}}(i));
		  toggle1(i);
		}
	}
})();

Обратите внимание на строчку с замыканием
moreBtnReview[i].addEventListener('click', function(key){return function(){toggle1(key);}}(i));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abyrkov
@abyrkov
JavaScripter
moreBtnReview[i].style.display = '';
Стиль некорректен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы