2012-05-28 3 views
0

Я сталкиваюсь с смешной проблемой. Я не знаю, в чем причина. Я пытался искать в Интернете, но никаких решений у меня нет. Проблема заключается в том, что offsetWidth работает отлично в Chrome, но offsetHeight работает неправильно. Иногда он возвращает значение, но иногда. Могу ли я узнать, есть ли решение решить эту проблему.offsetHeight не работает должным образом в хромированном

Примечание: Я попытался использовать id.height, id.clientHeight. Но все это дает мне ту же проблему. В моих проектах мы также используем Prototype и JQuery.

Я использовал прототип getHeight() также .. но не работает в Chrome. getWidth() работает отлично. Но все это хорошо работает в Firefox ... :(

Это блок кода

$('leftImage_<?php echo $iExtLoop; ?>').style.position="relative"; 
$('leftImage_<?php echo $iExtLoop; ?>').style.left= ($('leftImageDiv').offsetWidth - $('leftImage_<?php echo $iExtLoop; ?>').offsetWidth)/2 + "px"; 
$('leftImage_<?php echo $iExtLoop; ?>').style.top= ($('leftImageDiv').offsetHeight - $('leftImage_<?php echo $iExtLoop; ?>').offsetHeight)/2 + "px"; 

if($('stripLeft_<?php echo $iExtLoop; ?>')){ 
    $('stripLeft_<?php echo $iExtLoop; ?>').style.position="relative"; 
    $('stripLeft_<?php echo $iExtLoop; ?>').style.left= ($('leftImageDiv').offsetWidth - $('stripLeft_<?php echo $iExtLoop; ?>').offsetWidth) + "px"; 
    $('stripLeft_<?php echo $iExtLoop; ?>').style.top= ($('leftImageDiv').offsetHeight - $('stripLeft_<?php echo $iExtLoop; ?>').offsetHeight) + "px";          
} 

Refactored код, добавил Šime Vidas:

var img = $('leftImage_<?php echo $iExtLoop; ?>'); 
var div = $('leftImageDiv'); 
var strip = $('stripLeft_<?php echo $iExtLoop; ?>'); 

img.style.position = "relative"; 
img.style.left = (div.offsetWidth - img.offsetWidth)/2 + "px"; 
img.style.top = (div.offsetHeight - img.offsetHeight)/2 + "px"; 

if (strip) { 
    strip.style.position = "relative"; 
    strip.style.left = (div.offsetWidth - strip.offsetWidth) + "px"; 
    strip.style.top= (div.offsetHeight - strip.offsetHeight) + "px"; 
} 
+1

Опубликовать код. – Cristy

+0

блок кода добавил ... любые идеи, почему это ?? –

+0

Что такое '' '? Прототип или jQuery? –

ответ

0

С по крайней мере, один из элементов представляется элементом IMG, я предполагаю, что элемент не закончил загрузку к моменту выполнения кода.

Изображения должны быть получены отдельно (от браузера), поэтому вы должны убедиться, что прочитали их высоту только после того, как они закончили загрузку.

+0

Извините за смущение. onload не работает в том смысле, что ширина и высота изображения правильно вычислены. Но его стиль не устанавливается на этот образ. Это означает: strip.style.position = "relative"; strip.style.left = (div.offsetWidth - strip.offsetWidth) + "px"; strip.style.top = (div.offsetHeight - strip.offsetHeight) + "px"; Эта часть кода не выполнена или что-то в этом роде. Но изображение не помещено в нужное место. –

+0

@FaizulHasan Установите точку останова на этой строке и посмотрите, выполняется ли она. Если да, посмотрите, какие значения назначены. –