Не работает 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, время: 21:25. |