<div id="mydiv" style="width:1000px;height:100px;overflow:hidden;" onmousemove="mover(id, event)">
<div id="inner" style="width:40000px;height:100px;">1</div>
</div>
<div id="posX"></div>
<div id="posY"></div>
function mover(id, event) {
//var frameWidth = document.getElementById(id).clientWidth;
//var frameHeight = document.getElementById(id).clientHeight;
//var inframeLeft = document.getElementById('inner').offsetLeft;
//var inframeTop = document.getElementById('inner').offsetTop;
var obj = document.getElementById('inner').style;
obj.left = -100 + 'px';
//alert(obj.left);
document.getElementById('posX').innerHTML = 'X : ' + event.clientX;
document.getElementById('posY').innerHTML = 'Y : ' + event.clientY;
}
Спустя 19 минут, 52 секунды (15.03.2010 - 21:36) sergeiss написал(а):
Ну, для начала.... У тебя в начальном коде (до того, как ты его скорректировал ) были неправильно указаны имена.
Затем. Минус (дефис) развер разрешен в именах?
Затем. Минус (дефис) развер разрешен в именах?
Спустя 1 минута, 12 секунд (15.03.2010 - 21:37) qpayct написал(а):
Цитата (sergeiss @ 15.03.2010 - 20:36) |
Ну, для начала.... У тебя в начальном коде (до того, как ты его скорректировал ) были неправильно указаны имена. Затем. Минус (дефис) развер разрешен в именах? |
дк торопился.... ошибки в родном коде не было
а дефис всегда работал до сих пор но специально дабы рассеить двуякость я его убрал
Спустя 1 минута (15.03.2010 - 21:38) sergeiss написал(а):
Вот твой код в рабочем виде (переделан из первоначально выложенного варианта)... Если я правильно понимаю, то обязательно указывать position надо.
При подведении мышки вложенный ДИВ перепрыгивает, и позиции пишутся правильно в нужные поля. Реально меняются цифирьки
<div id="mydiv" style="width:1000px;height:100px;overflow:hidden; background-color:#00CCFF; position:relative" onmousemove="mover(id, event)">
<div id="inner_div" style="width:40000px;height:100px; background-color:#FF0000; position:relative; left:100px">1</div>
</div>
<div id="posX"></div>
<div id="posY"></div>
<script language="javascript" type="text/javascript">
function mover(id, event) {
var frameWidth = document.getElementById(id).clientWidth;
var frameHeight = document.getElementById(id).clientHeight;
var inframeLeft = document.getElementById('inner_div').offsetLeft;
var inframeTop = document.getElementById('inner_div').offsetTop;
document.getElementById('inner_div').style.left = 200 + 'px';
document.getElementById('posX').innerHTML = 'X : ' + event.clientX;
document.getElementById('posY').innerHTML = 'Y : ' + event.clientY;
}
</script>
<input type="text" name="posX" id="posX" /><br />
<input type="text" name="posY" id="posY" /><br />
При подведении мышки вложенный ДИВ перепрыгивает, и позиции пишутся правильно в нужные поля. Реально меняются цифирьки
Спустя 3 минуты, 2 секунды (15.03.2010 - 21:41) qpayct написал(а):
sergeiss точно! ну спасибо дружище. в какой раз уже выручаешь? с меня мерси
Спустя 1 минута, 15 секунд (15.03.2010 - 21:42) sergeiss написал(а):
Цитата (qpayct @ 15.03.2010 - 22:41) |
с меня мерси |
"Мерси" сгущёнкой не пахнет!
Спустя 1 минута, 47 секунд (15.03.2010 - 21:44) qpayct написал(а):
это да зато бесплатно
Спустя 1 час, 17 минут, 33 секунды (15.03.2010 - 23:02) qpayct написал(а):
забадался.... бошка отказуется думать
хочу сделать так, чтоб пока мыша находится внутри внешнего элемента, внутренний элемент двигался. попытался зациклить не хочет... как быть?
хочу сделать так, чтоб пока мыша находится внутри внешнего элемента, внутренний элемент двигался. попытался зациклить не хочет... как быть?
var i=0;
function runer() {
var obj = document.getElementById('inner').style;
i-=20;
obj.left = i + 'px';
document.getElementById('inner').onpropertychange = runer();
//document.getElementById('posX').innerHTML = 'i : ' + i;
//document.getElementById('posY').innerHTML = 'left : ' + obj.left;
}
Спустя 17 минут, 50 секунд (15.03.2010 - 23:20) glock18 написал(а):
смотри события mouseover и mouseout
Спустя 3 минуты, 19 секунд (15.03.2010 - 23:23) sergeiss написал(а):
А нафига ты меняешь innerHTML? Это же просто текст...
Чем тебе не нравится left в стиле? Работает "как часы".
Ты сам же это писал в первом сообщении!!!
Только не 200 указывай, а нужное тебе число.
Чем тебе не нравится left в стиле? Работает "как часы".
document.getElementById('inner_div').style.left = 200 + 'px';
Ты сам же это писал в первом сообщении!!!
Только не 200 указывай, а нужное тебе число.
Спустя 58 минут, 42 секунды (16.03.2010 - 00:22) qpayct написал(а):
sergeiss
innerHTML эт для глазов, а изменение вот тут идёт
glock18, не! ну у меня не на столько ветер в голове..... если мышка попадает в див тогда происходит функция, а если просто стоит внутри дива тогда ничего не происходит, а надо чтоб происходило пока мышка внутри... вот я и попытался типа рекурсию сделать а она не фурычит....
innerHTML эт для глазов, а изменение вот тут идёт
obj.left = i + 'px';
glock18, не! ну у меня не на столько ветер в голове..... если мышка попадает в див тогда происходит функция, а если просто стоит внутри дива тогда ничего не происходит, а надо чтоб происходило пока мышка внутри... вот я и попытался типа рекурсию сделать а она не фурычит....
Спустя 21 минута, 48 секунд (16.03.2010 - 00:43) sergeiss написал(а):
Цитата (qpayct @ 16.03.2010 - 01:22) |
не! ну у меня не на столько ветер в голове..... |
А похоже, что настолько Если даже не больше, чем настолько.
Я вот всё думал - догадаешься ты или нет? У тебя же ВСЁ УЖЕ СДЕЛАНО БЫЛО!!! Осталось только догадаться, как это окончательно скомпоновать.
Вот этот код проверь...
function mover(id, event) {
document.getElementById('inner_div').style.left = (event.clientX +20 )+ 'px';
document.getElementById('inner_div').style.top = (event.clientY +20 )+ 'px';
}
Спустя 7 минут, 34 секунды (16.03.2010 - 00:51) qpayct написал(а):
короче либо я вас не понимаю либо вы меня... пойду я спать! утро вечера мудреней
Спустя 7 часов, 29 минут, 25 секунд (16.03.2010 - 08:20) Nikitian написал(а):
Цитата (qpayct @ 15.03.2010 - 21:22) |
надо чтоб происходило пока мышка внутри... вот я и попытался типа рекурсию сделать а она не фурычит.... |
Для этих целей вроде как есть метод onmousemove, который срабатывает при каждом перемещении внутри объекта.
Спустя 40 минут, 9 секунд (16.03.2010 - 09:01) sergeiss написал(а):
Цитата (qpayct @ 16.03.2010 - 01:51) |
пойду я спать! утро вечера мудреней |
Верно подмечено Но ты хотя бы просто попробуй последний мой код. Может быть и поймешь...
Цитата (Nikitian @ 16.03.2010 - 09:20) |
Для этих целей вроде как есть метод onmousemove |
А он и работает с этим методом (см. стартовое сообщение темы). Только "заблудился в 3-х соснах", потому что сам себя запутал.
Спустя 2 часа, 44 минуты, 52 секунды (16.03.2010 - 11:45) qpayct написал(а):
Цитата (Nikitian @ 16.03.2010 - 07:20) |
Для этих целей вроде как есть метод onmousemove, который срабатывает при каждом перемещении внутри объекта. |
это верно, однако пока мыша находится внутри обьекта без движений, действие приостанавливается. я щас попробую выставить флаг и включать таймер при попадании мыши в обьект. короче щас продолжим вчерашнюю мутку только с чистой головой
sergeiss
код я ещё вчера проверил. и без того было понятно, что обьект будет бегать за мышей, а это не совсем то, что мне надо.
там всё чуть-чуть сложнее, надо правильную конструкцию и обработчик сделать, но сначала надо выпить чаю
Спустя 4 часа, 1 минута, 6 секунд (16.03.2010 - 15:47) qpayct написал(а):
всё больше и больше полюбляю JavaScript хорошая весчь, но не идеальная
в общем первая собака убита.
вопервых оказывается события onmousemove и onmouseout работаюь совсем не так, как кажется на первый взгляд...
вот простой пример
тоесть допустим у нас есть флажок flag, который при наведении мыши надо включать, а при выведении мыши надо выключать. в этой ситуации эти события нам не помогут ибо если быстро ввести мышу на территорию элемента сначала выполнится out затем in, а при выводе действие с таймером закончит своё действие несмотря на то, что флажок уже =false после события onmouseout="moveOut();" посему вопрос решён по другому. onmouseout я больше не использую.
в общем первая собака убита.
вопервых оказывается события onmousemove и onmouseout работаюь совсем не так, как кажется на первый взгляд...
вот простой пример
function moveIn() {
alert('in');
}
function moveOut() {
alert('out');
}
<div style="width:1000px;height:1000px;border:1px solid black;" onmousemove="moveIn();" onmouseout="moveOut();"></div>
тоесть допустим у нас есть флажок flag, который при наведении мыши надо включать, а при выведении мыши надо выключать. в этой ситуации эти события нам не помогут ибо если быстро ввести мышу на территорию элемента сначала выполнится out затем in, а при выводе действие с таймером закончит своё действие несмотря на то, что флажок уже =false после события onmouseout="moveOut();" посему вопрос решён по другому. onmouseout я больше не использую.
<div id="panel" onmousemove="posXY('inpanel', event);" style="width:1000px;height:200px;border:1px solid black;">
<div id="inpanel" style="width:800px;height:100px;margin: 50px 0 0 100px;overflow:hidden;border:1px solid black;">
<div id="inner" style="width:40000px;height:100px;position:relative;border:1px solid black;"></div>
</div>
</div>
<div id="posInOut"></div>
var x = y = 0;вот такая конструкция, если кому интересно
var oLeft = oTop = oWidth = oHeight = 0;
function posXY(id, event) {
x = event.clientX; // мыша Х
y = event.clientY; // мыша У
oLeft = document.getElementById(id).offsetLeft; // начальная координата окна слева
oTop = document.getElementById(id).offsetTop; // начальная координата окна сверху
oWidth = document.getElementById(id).offsetWidth + oLeft; // ширина окна
oHeight = document.getElementById(id).offsetHeight + oTop; // высота окна
if (x > oLeft && y > oTop && x < oWidth && y < oHeight) {document.getElementById('posInOut').innerHTML = 'IN';}
else if (x < oLeft || y < oTop || x > oWidth || y > oHeight) {document.getElementById('posInOut').innerHTML = 'OUT';}
}
Спустя 28 минут, 42 секунды (16.03.2010 - 16:15) qpayct написал(а):
Цитата (sergeiss @ 16.03.2010 - 08:01) |
"заблудился в 3-х соснах" |
точно
всё намного проще
<div id="panel" onmousemove="getElementById('posInOut').innerHTML='IN'"и не лохматить бабушку
onmouseout="getElementById('posInOut').innerHTML='OUT'"
style="width:1000px;height:200px;border:1px solid black;">