Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2011, 00:26
Аспирант
Отправить личное сообщение для bazilio2010 Посмотреть профиль Найти все сообщения от bazilio2010
 
Регистрация: 04.10.2011
Сообщений: 34

нужно, чтоб Div менялся в зависимости от размера картинки
Нужно менять ширину divа в зависимости от того какая картинка загружена с сервера.
Вот примерно такой код:

<html>
<head>
<title></title>
<style>
div.i {
position: relative;
background-color: #FF9999;
}
img {
margin-left: 20px;
}
</style>
</head>
<body>
<div style=" height: 10px;">
<img id="hid" style="visibility: hidden;" src="3.jpg" />
</div>
<script>
var h = document.getElementById('hid').offsetWidth;
if (h<300)
{
h=300;
}
else
{
h=h;
}
var hs = 40 + h;
document.write("<div class='i' style='width: " +hs+ "px;'>")
</script>
<img src="3.jpg" />
</div>
</body>
</html>

Работает только со второй загрузки страницы раза никто не подскажет почему?
Ответить с цитированием
  #2 (permalink)  
Старый 10.10.2011, 07:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

потому что при загрузке страницы код исполняется ДО того, как картинка загружена, поэтому её offsetWidth будет нулём.

во втором случае скрипт опять таки прочитывает её ширину, но картинка уже есть в кэше, и поэтому её оффсетовая ширина не равна нулю.

поэтому работает "со второго" раза

вывод : менять ширину надо после загрузки картинки.
Ответить с цитированием
  #3 (permalink)  
Старый 10.10.2011, 12:14
Аспирант
Отправить личное сообщение для bazilio2010 Посмотреть профиль Найти все сообщения от bazilio2010
 
Регистрация: 04.10.2011
Сообщений: 34

Сообщение от melky Посмотреть сообщение
вывод : менять ширину надо после загрузки картинки.
А не могли подсказать, как это делается?
Ответить с цитированием
  #4 (permalink)  
Старый 10.10.2011, 12:54
Профессор
Отправить личное сообщение для розовый слоник Посмотреть профиль Найти все сообщения от розовый слоник
 
Регистрация: 17.10.2009
Сообщений: 258

у тега img есть событие onload
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2011, 14:02
Аспирант
Отправить личное сообщение для bazilio2010 Посмотреть профиль Найти все сообщения от bazilio2010
 
Регистрация: 04.10.2011
Сообщений: 34

Я очень плохо знаю js. Поэтому даже логику понять не могу. Есть событие onload, нужно остановить загрузку страницы пока оно не произойдет? И если да то как это сделать? Или как то это все проще?
Ответить с цитированием
  #6 (permalink)  
Старый 10.10.2011, 18:55
Аспирант
Отправить личное сообщение для bazilio2010 Посмотреть профиль Найти все сообщения от bazilio2010
 
Регистрация: 04.10.2011
Сообщений: 34

Порылся на форуме нашел решение вроде:
<html><head>

<script language=javascript>
function Show(){
var ttt=document.getElementById('HidePic');
var sss=document.getElementById('Pic');
var x=ttt.width;
sss.width=x;
sss.src=ttt.src;
var j= 30;
var z=x+j;
document.getElementById('par').style.width=''+z+'p x';

}

function PreLoadImg(sss){
var ttt=document.getElementById('HidePic');
ttt.src=sss.src;
Show();
}
</script>

</head>
<body>
<div style="position:absolute;visibility:hidden;">
<IMG src="shariky.gif" id="HidePic" onload="PreLoadImg(this)"></div> <!--невидимый div для предварительной загрузки изображения-->
<div id="par" style=" border: 1px solid #000;">
<IMG src="shariky.gif" border=0 id="Pic" style="padding-left: 15px;">
</div>
</body>
</html>
Теперь ошибка в IE. Никто не подскажет насколько это решение правильное и как избавится от ошибки
Ответить с цитированием
  #7 (permalink)  
Старый 10.10.2011, 20:01
Интересующийся
Отправить личное сообщение для Nikoole Посмотреть профиль Найти все сообщения от Nikoole
 
Регистрация: 04.07.2011
Сообщений: 20

ttt.src=sss.src;
Show();


попробуйте так:
ttt.src=sss.src;
ttt.onload = function() {Show();};
Ответить с цитированием
  #8 (permalink)  
Старый 10.10.2011, 22:36
Аспирант
Отправить личное сообщение для bazilio2010 Посмотреть профиль Найти все сообщения от bazilio2010
 
Регистрация: 04.10.2011
Сообщений: 34

Судя по всему IE ругается на onload. Как с этим борются?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аjax запрос формирует div с изображениями, нужно показать после загрузки изображений Khmelevsky AJAX и COMET 2 13.09.2010 23:16
нужно создать много копий div ASM29A Элементы интерфейса 3 27.03.2010 20:22
Появление блоков div в зависимости от radio Oracool Events/DOM/Window 1 04.12.2009 18:39
Изменение размера блока реклама в зависимости от разрешения экрана. toxiz77 Общие вопросы Javascript 3 11.02.2009 14:12
Скрипт, изменения размера картинки soniclord Элементы интерфейса 14 28.10.2008 16:38