Галерея: из коллекции в массив
коллекция работает, массив -- нет.
Здесь 2 варианта на общих данных (картинки , стили) Вопрос должен быть простой, т.к. есть рабочий вариант в виде : Это работает: <div id="myGallery"> <img src="1.jpg" /> <img src="2.jpg" /> <img src="3.jpg" /> </div> А это не работает: <div id="myGallery"></div> <script src="js/list.js"></script> <script src="js/show.js"></script> === внешние файлы === var str = [`<img src="1.jpg"/>`, `<img src="2.jpg"/>`, `<img src="3.jpg" />`] function show() { var block = []; for (let i = 0; i < 3; i++) block.push(str[i]); document.getElementById('myGallery').innerHTML = block.join(''); } window.addEventListener("load", () => { show() }); я понимаю, что это избитая тема, на форуме много вопросов по этим массивам. По этим вопроса и собрал . Но в каждом свои особенности. Хорошо бы еще объяснение, почему не работает. Рабочий пример с голыми <img> прост до предела. Он использует скрипты и получает результат. Но как только мы переходим в область JS, он сразу перестает понимать другие скрипты. Все разваливается. Прикладываю пример SpaceGallery.zip space-work.html -- работает. index.html -- не работает. В консоли ошибок нет . У них все общее, разные только .html , разница выше. Это простая галерея. Я уже не помню, откуда я выкопал этот пример. Он простой. Есть еще такой же пример этой же галереи, но там добавляется 1 строка из jQuery. Это на крайний случай, Первый пример работает и без доп. строк. Первый работает последовательно , все ОК. Второй -- сборка массива, ему последовательность не подходит. Расскажите, почему :) |
seregadushka, зачем, имея массив str, делать еще один массив block?
Цитата:
|
Цитата:
|
Цитата:
коллеги , я приложил пример, там только скачать и открыть архив. Там все одинаково , кроме .html. Да, это простая галерея. Просто смена картинок. Я не прошу сделать ее с нуля. там в начале у обоих одинаково подключаются скрипты. space-work.html -- работает и показывает , как все дложно быть. И он заканчивается чистым <div>...картинки...</div>. Значит, в этом варианте скриптам не надо помогать. Они видят <div> и все делают как надо. В index.html скрипты те же , в том же месте. И <div> та же. <div id="myGallery" class="spacegallery"></div> <script src="js/list.js"></script> <script src="js/show.js"></script> Картинки выводятся -- значит, сборка произошла, show.js запустилась, но не вся -- стрипты стоят. Это же стандартный метод сборки. На форуме много аналогий. Его цель : внутри show.js регулировать численность картинок, чего в чистом HTML (в оригинале строк <div>... картинки...</div> 26 штук , в вопросе 3 шт) сделаь нельзя. Для этого JS и придумали. Это же стандартная проблема, когда show.js выводится не в том месте, не в то время . я не могу понять , куда ее вставить эту show.js -- до <div>...</div> или после. Не работает одинаково. либо show.js выводится , когда <div>...</div> еще нет, или наоборот. |
seregadushka,
в строку 7 window.addEventListener("load", () => { show() }); добавить инициализацию галереи window.addEventListener("load", () => { show(); $('#myGallery').spacegallery({loadingClass: 'loading'}); }); |
Цитата:
Я много раз применял эту сборку <div>. И всегда заканчивалось простым слушателем для загрузки show() , и все. У всех все работало. Такой строки не встречал. Спасибо, надо ее запомнить. Рсскажи, в первом варианте сами просто <div></div> --- и скрипты сами запускаются. здесь же надо те же самые скрипты еще инициализировать. Что им надо ? |
Цитата:
|
рони,
но я же вставлял эту show() и после картинок и перед. Тем более, в стоячем положении картинки есть. Как это все работает |
Цитата:
show как раз и вставляет картинки на страницу, до запуска show никаких картинок нет!!! а раз нет картинок, то не из чего делать галерею. вставили картинки, запустили создание галереи. для понимания ... создание галереи из layout.js отработало, но картинок не нашло, поэтому после создания картинок на странице, нужно повторно запустить инициализацию после show. |
рони, конечно, я открыл все эти скрипты и сразу закрыл. Разобраться там невозможно.
но в оригинале, все скрипты загрузились. И во 2 варианте тоже. далее <div><img>...</img</div> -- и этого достаточно для работы всех скриптов. Работает браузер, все выводит по голому <div> Во 2 вариант show() все собрала, и далее идет тот же самый <div><img>...</img</div>. После сборки эти <div> одинаковые . Почему во 2 варианте тот же самый <div> уже показывает те же картинки , но скриптам этого недостаточно ? Их нужно еще подпихнуть, чего не надо в оригинале ? |
Часовой пояс GMT +3, время: 07:17. |