Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2024, 07:49
Аватар для seregadushka
Аспирант
Отправить личное сообщение для seregadushka Посмотреть профиль Найти все сообщения от seregadushka
 
Регистрация: 10.07.2024
Сообщений: 39

Галерея: из коллекции в массив
коллекция работает, массив -- нет.
Здесь 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, 02.09.2024 в 14:14.
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2024, 09:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

seregadushka, зачем, имея массив str, делать еще один массив block?


Сообщение от seregadushka
Это работает:
...
А это не работает:
То, что статичный хтмл отображается нормально - это понятно... В чем выражается "неработоспособность" второго варианта?
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2024, 11:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,790

Сообщение от ksa
В чем выражается "неработоспособность" второго варианта?
У него, скорее всего, при заполнении #myGallery через js не инициализируется какой-нибудь слайдер.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2024, 14:35
Аватар для seregadushka
Аспирант
Отправить личное сообщение для seregadushka Посмотреть профиль Найти все сообщения от seregadushka
 
Регистрация: 10.07.2024
Сообщений: 39

Сообщение от ksa Посмотреть сообщение
зачем, имея массив str, делать еще один массив block?
потому что этому методу 100 лет в обед.

коллеги , я приложил пример, там только скачать и открыть архив. Там все одинаково , кроме .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, 02.09.2024 в 14:48.
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2024, 16:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

seregadushka,
в строку 7
window.addEventListener("load", () => { show() });


добавить инициализацию галереи

window.addEventListener("load", () => { show();  $('#myGallery').spacegallery({loadingClass: 'loading'});  });
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2024, 16:48
Аватар для seregadushka
Аспирант
Отправить личное сообщение для seregadushka Посмотреть профиль Найти все сообщения от seregadushka
 
Регистрация: 10.07.2024
Сообщений: 39

Сообщение от рони Посмотреть сообщение
seregadushka,
в строку 7
window.addEventListener("load", () => { show() });


добавить инициализацию галереи

window.addEventListener("load", () => { show();  $('#myGallery').spacegallery({loadingClass: 'loading'});  });
Рони, профессор ! Ты гений.
Я много раз применял эту сборку <div>. И всегда заканчивалось простым слушателем для загрузки show() , и все. У всех все работало. Такой строки не встречал. Спасибо, надо ее запомнить.

Рсскажи, в первом варианте сами просто <div></div> --- и скрипты сами запускаются.

здесь же надо те же самые скрипты еще инициализировать. Что им надо ?
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2024, 16:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от seregadushka
Что им надо ?
картинки, нет картинок нет инициализации.
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2024, 17:08
Аватар для seregadushka
Аспирант
Отправить личное сообщение для seregadushka Посмотреть профиль Найти все сообщения от seregadushka
 
Регистрация: 10.07.2024
Сообщений: 39

рони,
но я же вставлял эту show() и после картинок и перед. Тем более, в стоячем положении картинки есть. Как это все работает
Ответить с цитированием
  #9 (permalink)  
Старый 02.09.2024, 17:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от seregadushka
но я же вставлял эту show() и после картинок и перед.
???
show как раз и вставляет картинки на страницу, до запуска show никаких картинок нет!!! а раз нет картинок, то не из чего делать галерею. вставили картинки, запустили создание галереи.
для понимания ... создание галереи из layout.js отработало, но картинок не нашло, поэтому после создания картинок на странице, нужно повторно запустить инициализацию после show.
Ответить с цитированием
  #10 (permalink)  
Старый 02.09.2024, 17:48
Аватар для seregadushka
Аспирант
Отправить личное сообщение для seregadushka Посмотреть профиль Найти все сообщения от seregadushka
 
Регистрация: 10.07.2024
Сообщений: 39

рони, конечно, я открыл все эти скрипты и сразу закрыл. Разобраться там невозможно.
но в оригинале, все скрипты загрузились. И во 2 варианте тоже.
далее <div><img>...</img</div> -- и этого достаточно для работы всех скриптов. Работает браузер, все выводит по голому <div>

Во 2 вариант show() все собрала, и далее идет тот же самый <div><img>...</img</div>. После сборки эти <div> одинаковые .
Почему во 2 варианте тот же самый <div> уже показывает те же картинки , но скриптам этого недостаточно ? Их нужно еще подпихнуть, чего не надо в оригинале ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 23:11
Пустой массив при сохранении в localStorage kichkun Общие вопросы Javascript 3 19.11.2016 14:33
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14