Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   проблема с центровкой таблицы - работает со второго раза (https://javascript.ru/forum/misc/11903-problema-s-centrovkojj-tablicy-rabotaet-so-vtorogo-raza.html)

Rokkar 20.09.2010 18:31

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

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');
}

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

Sweet 20.09.2010 19:49

Может это потому, что большая картинка еще не загрузилась, и параметр image.width передается некорректно..

Rokkar 20.09.2010 23:21

Спасибо! за ответ
нашел решение
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

Sweet 20.09.2010 23:32

Цитата:

Сообщение от Rokkar
он должен заранее загружать по созданию нового объекта image

Во-первых, загрузка начинается, когда присваивается src. Во-вторых, загрузка не происходит мгновенно, а скрипт-то - не ждет. Так что все логично.

Rokkar 27.09.2010 11:36

Ну да =) Спасибо!


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