[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать над каким элементом мышь?
Гость_Алекс
Друзья, кто знает как можно узнать id HTML элемента над которым находится мышь в реальном времени не прибегая к jQuery и вне вписывая onmouseover атрибутом в сам элемент?



Спустя 32 минуты, 16 секунд (7.06.2012 - 14:45) redreem написал(а):
onmouseover можно навесить и после загрузки DOM. можно конечно отлеживать положение мышки и по таймауту проверять где она сейчас, но нафик оно?

Спустя 1 минута, 26 секунд (7.06.2012 - 14:47) inpost написал(а):
Надо вычислить координаты объекта, а при движении мыши считывать координаты мыши и сравнивать с расположением объекта.

Спустя 4 минуты, 11 секунд (7.06.2012 - 14:51) Guest написал(а):
Цитата (inpost @ 7.06.2012 - 11:47)
Надо вычислить координаты объекта, а при движении мыши считывать координаты мыши и сравнивать с расположением объекта.

а это точно самое простое решение данной задачи?

Спустя 7 минут, 55 секунд (7.06.2012 - 14:59) redreem написал(а):
самое простое onmouseover

Спустя 12 минут, 44 секунды (7.06.2012 - 15:11) Guest написал(а):
Цитата (redreem @ 7.06.2012 - 11:59)
самое простое onmouseover

подскажите пожалуйста как это реализовать - уж очень интересно?

ниже привожу код после загрузки окна, как его изменить чтобы когда мышка появится над "над этим элементом" выскакивало его содержимое взятое кодом?
<script type="text/javascript">

function test(){
alert('f');
}

window.onload = function (){

test();

}

<div>над этим элементом</div>
</
script>

Спустя 2 минуты, 49 секунд (7.06.2012 - 15:14) Игорь_Vasinsky написал(а):
это обычный hover, но на JS
http://javascript.ru/forum/dom-window/1005...-ehlementa.html

но если уже подвешен jquery - то есть метод .hover()

Спустя 3 минуты, 42 секунды (7.06.2012 - 15:18) redreem написал(а):
<div id="aydishnik">над этим элементом</div>

<script
type="text/javascript">

function
test(el){
alert(el.innerHTML);
}

window.onload = function (){

document.getElementById('aydishnik').onmouseover = function() { test(this); };

}


</script>

Спустя 3 минуты, 21 секунда (7.06.2012 - 15:21) Guest написал(а):
Цитата (Игорь_Vasinsky @ 7.06.2012 - 12:14)
это обычный hover, но на JS
http://javascript.ru/forum/dom-window/1005...-ehlementa.html

но если уже подвешен jquery - то есть метод .hover()

ну через квэри я знаю как)) и так бы но не совсем так - в вашем примере все завязано на: id="some"
а у меня задача при наведении на id="some" узнать что его id bvttn pyfxtybt some и дальше уже манипулировать... как это можно сделать?

Спустя 2 минуты, 12 секунд (7.06.2012 - 15:24) SitnikovArtur написал(а):
Об одном из способов, как узнать над каким элементом мышь - можно почитать тут. Там описано как получить доступ к объекту, у которого вы можете спросить любую информацию, в том числе и id.

Спустя 1 минута, 44 секунды (7.06.2012 - 15:25) Игорь_Vasinsky написал(а):
Guest
пишешь функцию на JQ, передаёшь в аргументах что нибудь, мне не понятно что именно ты хочешь. а hover() - будет запускать эту функцию.

Спустя 6 минут, 23 секунды (7.06.2012 - 15:32) Guest написал(а):
Цитата (Игорь_Vasinsky @ 7.06.2012 - 12:25)
Guest
пишешь функцию на JQ, передаёшь в аргументах что нибудь, мне не понятно что именно ты хочешь. а hover() - будет запускать эту функцию.

дано:
1) чистый Javascript (не prototype, query и пр.)
2) есть <div>надо мной</div><a>или надо мной</a>
вопрос:
как получить атрибуты элемента над которым мышка не задавая название элементов div и a в условие?

Спустя 58 секунд (7.06.2012 - 15:33) Guest написал(а):
Цитата (SitnikovArtur @ 7.06.2012 - 12:24)
Об одном из способов, как узнать над каким элементом мышь - можно почитать тут. Там описано как получить доступ к объекту, у которого вы можете спросить любую информацию, в том числе и id.

видел там только по заранее заданному id. если не сложно скопируйте пожалуйста сюда ту часть где это есть?

Спустя 7 минут, 26 секунд (7.06.2012 - 15:40) Michael написал(а):
Цитата (inpost @ 7.06.2012 - 13:47)
Надо вычислить координаты объекта, а при движении мыши считывать координаты мыши и сравнивать с расположением объекта.

большей глупости не слышал...

Читай тут про события. Про всплывание, про то что можно навесить обработчик на родителя и в нем получить конкретный сгенерировавший элемент.

Спустя 29 минут, 53 секунды (7.06.2012 - 16:10) SitnikovArtur написал(а):
Цитата (Michael @ 7.06.2012 - 12:40)
Цитата (inpost @ 7.06.2012 - 13:47)
Надо вычислить координаты объекта, а при движении мыши считывать координаты мыши и сравнивать с расположением объекта.

большей глупости не слышал...


Все правильно написано. Только нужно кешировать результаты, чтобы находясь над объектом ничего не сравнивать, тогда не будет подтормаживать.

Guest, вот та часть, только маркировка понадобится в любом случае. Самая примитивная - это "посмотреть" родителя.
   var elem = document.elementFromPoint(x,y);
while (elem)
{
if (elem != null)
{
if (маркирован) return elem;
elem = elem.parentNode;
}
}


Спустя 1 час, 21 минута, 12 секунд (7.06.2012 - 17:31) bodja написал(а):
<div>на этим элементом</div>

<
script type="text/javascript">
function mouse(e){
e=e||event;
if(e.type=='mouseover'){
alert(e.srcElement.innerHTML||e.target.innerHTML);
}
}

document.body.onmouseover=mouse;
</
script>

Спустя 2 часа, 8 минут, 1 секунда (7.06.2012 - 19:39) Guest написал(а):
Цитата (SitnikovArtur @ 7.06.2012 - 13:10)
Цитата (Michael @ 7.06.2012 - 12:40)
Цитата (inpost @ 7.06.2012 - 13:47)
Надо вычислить координаты объекта, а при движении мыши считывать координаты мыши и сравнивать с расположением объекта.

большей глупости не слышал...


Все правильно написано. Только нужно кешировать результаты, чтобы находясь над объектом ничего не сравнивать, тогда не будет подтормаживать.

Guest, вот та часть, только маркировка понадобится в любом случае. Самая примитивная - это "посмотреть" родителя.
   var elem = document.elementFromPoint(x,y);
while (elem)
{
if (elem != null)
{
if (маркирован) return elem;
elem = elem.parentNode;
}
}

спасибо за ответ!

Спустя 6 минут, 59 секунд (7.06.2012 - 19:46) Guest написал(а):
Цитата (bodja @ 7.06.2012 - 14:31)
<div>на этим элементом</div>

<
script type="text/javascript">
function mouse(e){
e=e||event;
if(e.type=='mouseover'){
alert(e.srcElement.innerHTML||e.target.innerHTML);
}
}

document.body.onmouseover=mouse;
</
script>

ахренеть, простите. вот это реально круто!
только нужно наверное проверить условием до алерта: e.srcElement.innerHTML
так как у меня например вызывает ошибку.

Спасибо, это ценные знания в копилочку!

Спустя 28 минут, 50 секунд (7.06.2012 - 20:15) inpost написал(а):
Michael
В виду своего незнания люди пишут всякий бред.
<div style="position:absolute; width:500px; height:400px; left:0px; top:0px; z-index:2"></div>
<
div style="position:absolute; width:50px; height:50px; left:50px; top:50px; z-index:1">Наведение на этот элемент</div>


Удачи в написании кода при наведении, если такой умный.

Спустя 10 часов, 44 минуты, 8 секунд (8.06.2012 - 06:59) Michael написал(а):
Цитата (inpost)
Удачи в написании кода при наведении, если такой умный

да поумнее тебя, во всяком случае чего не знаю о том не болтаю ;)

Примерно что я говорил bodja набросал, но увы с ошибками. Делается так:

<body >
<div
id="d1"> d1
<div id="d2"> d2
<span id="s1">s1</span><span id="s2">s2</span>
</div>
<div
id="d3">d3
<span id="s3">s3</span><span id="s4">s4</span>
</div>
<span
id="s5">s5</span>
d1
</div>
Наведено на:
<p id="result"></p>
</body>


document.body.onmouseover = mouse;
var res = document.getElementById('result');
function mouse(event){
var event = event || window.event;
var source = event.target || event.srcElement;
res.innerHTML = source.id;
}


ДЕМО

Спустя 2 часа, 51 минута, 7 секунд (8.06.2012 - 09:50) bodja написал(а):
Guest
Это был намек ,как вы можете получить указатель на этот элемент при наведении. wink.gif
Потом вы сможете с ним делать ,что хотите.
Эстественно ,перед этим вы должны убедится ,что это именно тот элемент который вы хотите,
по его ид ,содержанию ,классу ,стилю и т.д.

Спустя 1 час, 31 минута, 44 секунды (8.06.2012 - 11:22) inpost написал(а):
Michael
Условие не выполнено! Я показал код, вот на примере его и показывай!

Спустя 1 час, 45 минут, 16 секунд (8.06.2012 - 13:07) Michael написал(а):
Цитата (inpost @ 8.06.2012 - 10:22)
Michael
Условие не выполнено! Я показал код, вот на примере его и показывай!

Какое условие и причем тут твой код? Я для ТС-а решение написал. И да, js код не изменится wink.gif , ты хоть в код то посмотри, заметишь что он не зависит от определенной разметки и взаиморасположения.

Спустя 3 часа, 32 минуты, 54 секунды (8.06.2012 - 16:40) inpost написал(а):
Michael
*facepalm*, вот как доказывать человеку, который не понимает о чём речь...

Спустя 41 минута, 40 секунд (8.06.2012 - 17:22) Michael написал(а):
и не говори, мы до сих пор не видели твой код, одно бал-бла-бла, за которое тебя недавно и минусанули. wink.gif

Цитата (inpost)
доказывать

аргументы предоставить?

Спустя 58 минут, 3 секунды (8.06.2012 - 18:20) inpost написал(а):
Я выше дал код, где элемент скрыт под другим элементом.
"мы до сих пор не видели твой код" - а я вижу выше. Ай-ай-ай! В Москве уже давным давно посоветовали бы купить очки.

Спустя 22 минуты, 17 секунд (8.06.2012 - 18:42) Michael написал(а):
Не тупи, я говорил, где твой js-код, а то одно балабольство.

А насчет твоего html-a, так наведено не над вторым элементом, а над первым. Второй под ним и он скрыт. Слой css - это как слои бумаги. Во даешь, и тут ты чайник. mad.gif . ТС ничего подобного вычислять не просил wink.gif , правда он слился куда то...

Спустя 20 минут, 10 секунд (8.06.2012 - 19:02) inpost написал(а):
Michael
Он не заявлял обратное, вообще-то тут ты чайник. Он же сказал, что эффект "onmouseover" не подходит, отсюда можно сделать предположение, что невозможно по той причине, что невозможно навести на этот объект в виду того, что он находится в нижнем слое, а не скрыт, потому что верхний слой прозрачный.
Как обойти эту проблему я написал выше и меня поддержал ещё один человек. Повторюсь, если ты элементарного не понимаешь, то тут ты чайник.

Спустя 11 часов, 41 минута, 43 секунды (9.06.2012 - 06:44) Michael написал(а):
Вот его вопрос: wink.gif
Цитата (Гость_Алекс)
Друзья, кто знает как можно узнать id HTML элемента над которым находится мышь в реальном времени не прибегая к jQuery и вне вписывая onmouseover атрибутом в сам элемент?


Цитата (inpost)
Он же сказал, что эффект "onmouseover" не подходит

он такого не говорил. Он, по незнанию js, думал что в каждый элемент хтмл-а придется вписать атрибут, что неудобно. Соответственно и следующий твой вывод безоснователен:
Цитата (inpost)
отсюда можно сделать предположение... потому что верхний слой прозрачный

вот это и было твое глупое предположение. Если бы нужно было что то специфическое, это было бы указано. И говорится о "id HTML элемента", который надо узнать, а не кучи каких то элементов, которых по z-index-у может тыща там снизу быть. Так можно сказать что под любым элементом есть его родители и конечно же BODY.
И мы кстати так и не увидели код от тебя, реализующий эту задачу. Трепаться, это не код писать.

Может хватит лгать лишь бы не признавать своих промахов? Противно с тобой, лгущим, общаться. Вообще чувство достоинства своего теряешь, любой ведь мало мальски специалист увидит тут твою клоунаду и сделает соответствующий вывод, а у тебя все таки "Эксперт" приписано.....

Спустя 5 часов, 53 минуты, 59 секунд (9.06.2012 - 12:38) HErATuB написал(а):
Вот на jQuery:

$('*').mouseover(function(){
var _id = $(this).attr('id');
if (_id != undefined){
alert(_id);
}
}
);

Если тебе не нужно jQuery, а тебе это не нужно, используй как говорил Michael. Вот немножко видоизмененная:

function mouse(event){
var event = event || window.event;
var source = event.target || event.srcElement;
if(source.id != ""){
alert(source.id);
}
}

document.body.onmouseover = mouse;document.body.onmouseover = mouse;

Спустя 27 минут (9.06.2012 - 13:05) Michael написал(а):
HErATuB, если на jQuery то надо live, а не на каждый элемент вешать обработчик, т.к. это не эффективно.

Спустя 26 минут, 20 секунд (9.06.2012 - 13:31) inpost написал(а):
Michael
Вообще-то ты ничего не знаешь, а говоришь. Тебе кажется, что ты эксперт, ну пусть тебе и дальше так кажется smile.gif

Спустя 7 минут, 6 секунд (9.06.2012 - 13:38) inpost написал(а):
Для особо "одарённых" повторюсь.
Есть ситуация: мы не знаем, находится ли в области видимости объект или нет.
Первый человек написал комментарий по поводу того, как вести себя если объект виден и наведение на него срабатывает.
Я дал альтернативу на случай, если мы имеем второй вариант, когда объект скрыт под другим объектом.

Это называется полностью развернутый ответ, то есть ответить человеку и на тот случай и на тот случай, если конкретные подробности неизвестны.

Так что тут ты снова проиграл, потому что я лишь расширил варианты ответов тем самым один из которых попадёт в точку. Если тебе кажется, что в виду незнания вопроса можно давать лишь один ответ, а второй вариант даже не рассматривать - то мне стыдно за таких программистов. Истинный программист в голове должен видеть абсолютно все ситуации, а не только "ну я думал, что он имел ввиду это..."

Спустя 1 минута, 36 секунд (9.06.2012 - 13:40) Michael написал(а):
без комментариев. wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.