Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как дописать скрипт раскрывающегося текста? (https://javascript.ru/forum/misc/65708-kak-dopisat-skript-raskryvayushhegosya-teksta.html)

sergey24 04.11.2016 03:01

Как дописать скрипт раскрывающегося текста?
 
Доброго дня. Имеется два списка ссылок, а так же некое кол-во блоков. Требуется, чтобы по клику одной из ссылок, открывался соответствующий блок, а предыдущий закрывался. Нашёл на просторах интернета скрипт:
<script>
	var show;
	function hidetxt(type){
 	param=document.getElementById(type);
 	if(param.style.display == "none") {
 	if(show) show.style.display = "none";
 	param.style.display = "block";
 	show = param;
 	}else param.style.display = "none"
	}
	</script>

<a onclick="hidetxt('tab1'); return false;" href="#">Ссылка</a>
<a onclick="hidetxt('tab2'); return false;" href="#">Ссылка</a>

<div id="tab1" style="display:none;">Текст</div>
<div id="tab2" style="display:none;">Текст</div>

Как сделать, чтобы при загрузки страницы первый блок показывался? Прописывал display:block, но тогда блок висит пока его не закроешь соответствующей ссылкой. После чего он работает нормально. Подскажите, пожалуйста, как дописать данный скрипт, либо предложите свой вариант. Заранее благодарен.

PS. Ещё заметил, что при открытии вкладок таким образом, слайдер не выводит сразу 3 миниатюры, а делает это только после пролистывания (клика по "предыдущий", "следующий"). Использую slick карусель. Также буду благодарен, если кто-то подскажет в чём дело.

PSS. Ссылки и блоки расположены в разных частях сайта, так что загнать их в один div не удастся.

рони 04.11.2016 03:08

sergey24,
форум - поиск - открывашка

рони 04.11.2016 03:10

Цитата:

Сообщение от sergey24
slick карусель.

display:none нет размера для слайдера

sergey24 04.11.2016 03:36

Цитата:

Сообщение от рони
форум - поиск - открывашка

Спасибо, нашёл подходящий вариант, осталось только с миниатюрами разобраться.

рони 04.11.2016 08:32

Цитата:

Сообщение от sergey24
осталось только с миниатюрами разобраться.

reInit после открытия

sergey24 04.11.2016 09:11

рони,
Можно по подробнее, пожалуйста, как это сделать?
<li><a onclick="_click(1); return false;" href="#">Ссылка 1</a></li>
<li><a onclick="_click(2); return false;" href="#">Ссылка 2</a></li>

<div id="item1" style="display:none;">Код слайдера 1</div>
<div id="item2" style="display:none;">Код слайдера 2</div>

<script type="text/javascript">
		var _click = function () {
        var b = 1;
        return function (c) {
            var a = document.getElementById("item" + b);
            c == b && (a.style.display = "none" == a.style.display ? "" : "none");
            c != b && (a.style.display = "none", a = document.getElementById("item" + c), a.style.display = "", b = c)
        }
    	}();
		window.onload = function() {
    	_click(1)
 		}
	</script>

рони 04.11.2016 09:25

sergey24,
примерно так
var _click = function () {
        var b = 1;
        return function (c) {
            var a = document.getElementById("item" + b);
            $('.your-slider', a).slick('reInit');
            c == b && (a.style.display = "none" == a.style.display ? "" : "none");
            c != b && (a.style.display = "none", a = document.getElementById("item" + c), a.style.display = "", b = c)
        }
    	}();
    window.onload = function() {
    	_click(1)
 		}

sergey24 04.11.2016 10:10

рони,
Слайдер с главного таба пропадает и они перестают работать.
Вот js слайдера:
<script type="text/javascript">
    $(document).ready(function(){
       	$('.slider-for').slick({
  		slidesToShow: 1,
  		slidesToScroll: 1,
  		arrows: false,
  		fade: true,
  		asNavFor: '.slider-nav'
		});
		$('.slider-nav').slick({
  		slidesToShow: 3,
  		slidesToScroll: 1,
  		asNavFor: '.slider-for',
  		focusOnSelect: true
		});
    });
  	</script>

рони 04.11.2016 10:26

sergey24,
... читать документацию по slick, изучать js и jquery... более пока нечего добавить.

рони 04.11.2016 10:31

sergey24,
можно так
проинициализовать слайдеры а только потом их скрыть


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