Не работает GetPosition
Приветствую!
Не пойму в чем дело, есть:
function GetPosition($Object){
var $x = $y = 0;
while($Object){
Debug($Object.tagName);
$x += $Object.offsetLeft;
if(typeof $Object.scrollLeft != 'undefined')
$x -= $Object.scrollLeft;
$y += $Object.offsetTop;
if(typeof $Object.scrollTop != 'undefined')
$y -= $Object.scrollTop;
$Object = $Object.offsetParent;
}
return {clientX:$x,clientY:$y};
}
Есть обвязка по событию:
onclick="
with(document.getElementById('id').style) {
if(display != 'none')
{
display = 'none';
} else {
var Position = GetPosition(this);
left = Position.clientX;
top = Position.clientY + 10;
display='block';
}
}"
Не могу понять, почему в style не обрабатывается left/top. Если для проверки обрезать GetPosition до:
function GetPosition($Object){
return {clientX:10px,clientY:10px};
}
и убрать + 10 из: Код:
top = Position.clientY + 10;Складывается впечатление что гдето обрезается единицы исчисления, в моем случае это px |
да у вас тут черт ногу сломит))
более менее привел в рабочий вариант:
<html>
<head>
<title>example</title>
</head>
<body>
<div style="position: relative; top: 34px;">
<input type='button' value='click me' id="mybutton">
</div>
<!--<script src="http://code.jquery.com/jquery-1.10.2.js"></script>-->
<!--<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">-->
<script>
document.getElementById('mybutton').onclick = function ()
{
var $x = $y = 0;
var $Object = this;
while($Object)
{
//Debug($Object.tagName);
$x += $Object.offsetLeft;
if(typeof $Object.scrollLeft != 'undefined')
$x -= $Object.scrollLeft;
$y += $Object.offsetTop;
if(typeof $Object.scrollTop != 'undefined')
$y -= $Object.scrollTop;
$Object = $Object.offsetParent;
}
console.log($x);
console.log($y);
//return {clientX:$x,clientY:$y};
}
</script>
</body>
</html>
и еще.. говорят не рекомендуют вроде как использовать with http://habrahabr.ru/post/120364/ |
Спасибо за ответ, либы рабочей системы, так что без перепиливания пока. да и фреймворк, пока излишен.
А так, оказалось не пропускал валидатор в браузере Был указан DOCTYPE html, и в результате все что явно не указанно в px, вероятно обрубало, там где жестко прописано, помечал алертами |
Ой, сорри, фреймворка же нет)
|
| Часовой пояс GMT +3, время: 13:09. |