Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Не присваивается значение style


Автор: Alix36 21.3.2008, 10:21
Код

infos=function(tip,t,e){
var s=getCoords(t)
    
    var y = e.clientY + document.body.scrollTop
    var x = s.l + s.w
    
    var s=document.getElementById(tip);
       s.style.left=x;
    s.style.top=y;
    s.style.visibility='visible';
}
infod=function(tip){document.getElementById(tip).style.visibility='hidden';}


function getCoords(obj){
    var o=typeof(obj) == 'string' ? gebi(obj) : obj
    var ret={'l':o.offsetLeft,'t':o.offsetTop,'w':o.offsetWidth,'h':o.offsetHeight}
    while(o=o.offsetParent){
        ret.l+=o.offsetLeft
        ret.t+=o.offsetTop
    }

    return ret
    
}

Код

<img src="<?=PATH_IMG?>/item/<?php echo $item_array[6]; ?>"  width="70" height="60" onMouseOver="infos('ID слоя',this,event)" onMouseOut="infod('ID слоя)" border="0" onClick="infoitemwindow('<? echo $d[0]; ?>')">
<div class='tip' id='ID_слоя' >
</div>


При наведении на картинку, слой появляется, но почему-то  s.style.left=x;
    s.style.top=y; не происходит, и такие свойства не появляются

Добавлено через 1 минуту и 25 секунд
переменные x и y определены и не равны null проверял

Автор: Atlete 21.3.2008, 10:49
я конечно могу ошибаться, но если не инициализировать свойство style  в HTML то оно не будет доступно. То есть в HTML коде надо сделать начальную инициализацию этих переменных. Например:
Код

<img src="<?=PATH_IMG?>/item/<?php echo $item_array[6]; ?>"  width="70" height="60" onMouseOver="infos('ID слоя',this,event)" onMouseOut="infod('ID слоя)" border="0" onClick="infoitemwindow('<? echo $d[0]; ?>')">
<div class='tip' id='ID_слоя'  style="left:0px;top0px;">
</div>

Автор: bars80080 21.3.2008, 10:49
попробуй: s.left=x; s.top=y;

авось прокатит

Автор: ksnk 21.3.2008, 10:52
s.style.left=x+'px'

Автор: Alix36 21.3.2008, 12:27
Atlete, пробывал оставляет 0 0

ksnk, lело в том что значение не передается вообще никакой.
ksnk, bars80080, и всеравно не работает.

Автор: bars80080 21.3.2008, 13:00
слушай, а это из реального кода?

потому как infos('ID слоя',this,event)" не указывает на id='ID_слоя'  

/знак подчёркивания/
да и вообще наверно, лучше избегать кириллицы

Автор: ksnk 21.3.2008, 13:08
Цитата(Alix36 @  21.3.2008,  12:27 Найти цитируемый пост)
значение не передается вообще никакой.

Если оно невалидно, то так и будет... А распечатать значение X можно?

Автор: Alix36 21.3.2008, 15:32
ksnk, всмысле вывести? 
bars80080, вместо ID_слоя стоит пхп код, но в нем ошибок нет проверял.

Автор: ksnk 21.3.2008, 15:36
Цитата(Alix36 @  21.3.2008,  15:32 Найти цитируемый пост)
всмысле вывести? 
 alert'ом, к примеру. Вдруг там какое-нибудь странное значение, совсем на целое число непохожее?

Автор: Alix36 21.3.2008, 16:57
ksnk, до "s.style.Left=x;
    s.style.Top=y;"
Пустое значение.
после те координаты, что нужны.

Автор: ksnk 21.3.2008, 17:39
Предлагалось сделать вот что
Код

infos=function(tip,t,e){
var s=getCoords(t)
    
    var y = e.clientY + document.body.scrollTop
    var x = s.l + s.w

alert([x,y]) ; // вот сюда вставить alert и посмотреть!    
...



Автор: Alix36 21.3.2008, 18:04
ksnk, ну я и говорю, алерт возвращает те координаты,что нужны.

Автор: ksnk 21.3.2008, 18:10
Ну, тогда шаманские способы решения проблемы себя исчерпали, остается только FireBug'ом пройтись по тексту...

Автор: Alix36 24.3.2008, 07:57
каким-то странным шаманским образом заработало... 
Вроде ничего не менял...

Автор: ksnk 24.3.2008, 08:04
Возможно, помогло бы заклинание Ctrl-F5... ;-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)