Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2010, 18:31
Новичок на форуме
Отправить личное сообщение для Rokkar Посмотреть профиль Найти все сообщения от Rokkar
 
Регистрация: 20.09.2010
Сообщений: 5

проблема с центровкой таблицы - работает со второго раза
Добрый день
делаю сайт - весь скрипт свой..

function showroom_on (_id){
	document.getElementById("showroom_image").src =     _id.src.replace(/smpl/i,'large');// перенаправляю src в папку с полно размерами для таблицы которую центрую
	visible("showroom");// делаю видимым таблицу с рисунком..
}

function show_image(_id){// функция определяет для всех <img> событие onclick по которому появляется (display:block) таблица которую надо центровать. Изначально центрируется как забито по умолчанию для изображения 1024*800 
    var gallery = document.getElementById(_id);
    var image_list = gallery.getElementsByTagName("img");

  	for(var i= 0; i<=image_list.length-1; i++){
		image_list[i].onclick = function() {
			image = new Image();
			image.src = this.src.replace(/smpl/i,'large');
			centering("showroom", 800, image.width);// вот тут косяк функция выполняется только после второго нажатия на рисунок (т.е. при первом нажатии рисунок который появляется оказывается где-то слева, если он уже)
			showroom_on (this);
		}
	}
}
window.onload = function() {
	centering('showroom', 800, 1024);//функция центрует -"showroom" - id, 800 - высота картинки, 1024 - ширина
	show_image('gallery');
}

пожалуйста помогите избавится от косяка ...

Последний раз редактировалось Rokkar, 20.09.2010 в 18:33.
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2010, 19:49
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Может это потому, что большая картинка еще не загрузилась, и параметр image.width передается некорректно..
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2010, 23:21
Новичок на форуме
Отправить личное сообщение для Rokkar Посмотреть профиль Найти все сообщения от Rokkar
 
Регистрация: 20.09.2010
Сообщений: 5

Спасибо! за ответ
нашел решение
function show_image(_id){
    var gallery = document.getElementById(_id);
    var image_list = gallery.getElementsByTagName("img");
	
  	for(var i= 0; i<=image_list.length-1; i++){
		image = new Image();
		image_list[i].onclick = function() {
			image.src = this.src.replace(/smpl/i,'large');
			//alert(image.width);
			
			image.onload = function() {
				//alert("compleet "+image.width);
				centering("showroom", image.height, image.width);
				showroom_on (this);
			}	
		}
	}
}

правда причина все равно странная так как он должен заранее загружать по созданию нового объекта image
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2010, 23:32
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Rokkar
он должен заранее загружать по созданию нового объекта image
Во-первых, загрузка начинается, когда присваивается src. Во-вторых, загрузка не происходит мгновенно, а скрипт-то - не ждет. Так что все логично.
Ответить с цитированием
  #5 (permalink)  
Старый 27.09.2010, 11:36
Новичок на форуме
Отправить личное сообщение для Rokkar Посмотреть профиль Найти все сообщения от Rokkar
 
Регистрация: 20.09.2010
Сообщений: 5

Ну да =) Спасибо!
Ответить с цитированием
Ответ



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

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