Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2013, 05:56
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

Ждать окончания подгрузки изображения
Здравствуйте.
У меня скрипт создает img и назначает ему в src картинку. потом создает новую картинку, потом еще одну, а самую первую удаляет. то есть, все время две картинки, при чем каждая последующая поверх предыдущей. Проблема в том, что если медленное соединение интернета, то очередная картинка (еще пустая) может появится до того, как загрузилось изображение в первую.
делал onLoad проверку, если загрузилось, то только тогда добавлять новую, но что-то не работает... подскажите как правильно, пожалуйста.
на данный момент такой код:

...
 pole = document.getElementById('pole');

 img = document.createElement('img');
 
 img.style.position = 'absolute';
 img.style.top = 100+'px';
 img.left = 200+'px';
 img.height = 300+'px';
 img.style.width = 400+'px';

 img.onLoad = function()
 {
  img.src = 'какая-то картинка';
  pole.appendChild(img);
  setTimeout('эта же функция', 30);
 }
...
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2013, 07:21
Аватар для a_l
a_l a_l вне форума
Кандидат Javascript-наук
Отправить личное сообщение для a_l Посмотреть профиль Найти все сообщения от a_l
 
Регистрация: 15.09.2011
Сообщений: 143

img.onLoad = function()

Вместо onLoad должно быть onload
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2013, 12:53
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

Никакой разницы ... все равно новая добавляется до того, как загрузится первая =(
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2013, 21:45
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

Что еще можно сделать???
Ответить с цитированием
  #5 (permalink)  
Старый 01.11.2013, 23:11
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Зачем setTimeout и что такое "эта же функция"?
Странная какая-то логика в коде. Сделайте функцию и вызывайте ее после загрузки предыдущего изображения с новым адресом картинки.

<div id="pole"></div>
 <script>
 var pole = document.getElementById('pole');
 var imgSrcs = [false, 'http://picsfab.com/download/image/80616/5000x3500_art-kosmos-3d.jpg','http://picsfab.com/download/image/76314/5000x3200_art-kosmos-3d.jpg','http://picsfab.com/download/image/79812/7248x3819_art-kosmos-3d.jpg','http://www.fotokanal.com/images/72/earth-in-space.jpg','http://baadu.ru/ph/43/kosmos_planeta_bezdna_stanciya_shatl_mks_atmosfera_6048x4032.jpg','http://i.artfile.ru/4960x3544_662497_[www.ArtFile.ru].jpg','http://kidsmi.ru/wp-content/uploads/2013/04/DSC00870.jpg','http://catherineryanhoward.files.wordpress.com/2013/09/dscn0074.jpg'];
(function imgCreator() {
	if(!imgSrcs[1]) return;
	img = document.createElement('img');
	img.style.height = '60px';
	img.style.width = '80px';
	img.style.position = 'absolute';
	img.style.top = '10px';
	img.style.left = '20px';
	if (imgSrcs[0]) img.style.left = '100px'; // для четных изображений делаем отступ 20px + 80px
	imgSrcs[0] = !imgSrcs[0];
	img.src = imgSrcs[1];
	img.onload = function() {
		if (pole.children.length > 2) {
			var toRemove = pole.children[0];
			toRemove.parentNode.removeChild(toRemove);
		}
        imgSrcs.splice(1,1);
		imgCreator();
	}
	pole.appendChild(img);
})();
</script>

Последний раз редактировалось BETEPAH, 02.11.2013 в 00:38.
Ответить с цитированием
  #6 (permalink)  
Старый 02.11.2013, 02:25
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

setTimeout чтобы менялись с небольшой задержкой, а не сразу, а "эта же функция" - это эта же функция) саму себя вызывает, с задержкой, в общем, чтобы менялись картинки...
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2013, 12:32
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от ShutTap
setTimeout чтобы менялись с небольшой задержкой, а не сразу
30 миллисекунд и "сразу" - думаете, разница будет заметна?
Сообщение от ShutTap
а "эта же функция" - это эта же функция) саму себя вызывает
я не вижу в вашем коде ни одной функции, которую можно было бы вызывать из самой себя.
Код, который я написал, не подходит?
Ответить с цитированием
  #8 (permalink)  
Старый 02.11.2013, 13:54
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

Не подходит...
хотя может я неправильно делаю, я проверяю на медленном интернете, который есть только в телефоне... и там не работает. мой вариант - картинки подгружаются после добавления картинки, а не перед, а ваш вариант вообще не работает...
просто больше медленного интернета для проверки нет нигде...
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2013, 17:02
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от ShutTap
хотя может я неправильно делаю
все, что вам надо сделать, это нажать кнопку "посмотреть!" в посте №5 Я специально добавил адреса на 15- 25-мегапиксельные картинки, чтоб можно было оценить даже на НЕ медленном инете
Сообщение от ShutTap
Не подходит...
ОК
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение рабочей области изображения pagemaster Общие вопросы Javascript 19 15.04.2013 18:06
Расчет реальных размеров изображения в галерее Vision Элементы интерфейса 7 10.07.2012 21:56
Проблема: Jquery - эффект раскрытия LightBox для изображения. woody2 jQuery 0 16.09.2011 00:10
карта увеличенного изображения Luna82 Элементы интерфейса 11 15.06.2011 10:17
Проверка размера изображения Bizarre Общие вопросы Javascript 4 09.03.2011 18:02