К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

недейкая задачка по js onmouseover с setTimeout-ом

Гость
0 - 06.12.2012 - 20:06
Надо:
если над элементом (без id) нависнет мыша, то нужно покрасить элемент в другой цвет (onmouseover="this.style.color='red'; setTimeout('........', 1000);") и сделать так, что если через секунду указатель мышы будет все еще над ним (onmouseout="this.style.color='';"), то сделать this.onclick().

Вопрос, что надо написать вместо '........' в событии onmouseover()?



Гость
1 - 06.12.2012 - 20:07
недейкая = недецкая
сорри, репентинг.
Гость
2 - 07.12.2012 - 16:25
по событию mouseout нужно этому элементу ставить атрибут
а вместо троеточия делать клик, если атрибут установлен
Гость
3 - 07.12.2012 - 16:27
я не много напутал, но думаю идея понятна
Гость
4 - 07.12.2012 - 16:41
все, вопрос снимается.
http://go2dad.com/c3RhY2tvdmVyZmxvdy...VyLTEtc2Vjb25k
Гость
5 - 07.12.2012 - 16:43
2-toly84 >
да, примерно так.
Но там вышел небольшой прикол: при setTimeout объект this превращался в объект window со всеми вытекающими (например нельзя было уже обратиться к this.parentNode, this.свойства и т.д. в онклике).
Гость
6 - 07.12.2012 - 16:51
5-Гавайские субтитры > с jQuery было бы без приколов, хотя на вкус и цвет...
Гость
7 - 07.12.2012 - 17:12
6-toly84 >
да там наверное то же самое.
Что там за функция это делает, не подскажете? Чисто посмотреть, как там реализовано.
(если там вообще такое есть)
Гость
8 - 07.12.2012 - 17:21
7-Гавайские субтитры >http://api.jquery.com/click/
Гость
9 - 07.12.2012 - 17:22
var element = $('#id');
element.mouseover(function()**
// меняем цвет
// ставим атрибут
setTimeout(function()**
// если есть атрибут - делаем клик
**)
**);
element.mouseout(function()**
// снимаем атрибут
**)

просто если таких элементов будет много - то нужно будет хранить для каждого из них объект таймера, а здесь - никаких заморочек
Гость
10 - 07.12.2012 - 17:40
9-toly84 >
у элемента нету айди, в том-то и прикол.
Гость
11 - 07.12.2012 - 17:43
10-Гавайские субтитры > что мешает поставить его? + можно выбрать по тегу.
Гость
12 - 07.12.2012 - 18:17
Цитата:
Сообщение от toly84 Посмотреть сообщение
что мешает поставить его?
ставить загодя - проблематично. Т.к. их миллион таких.
Это что-то типа дерева файлов и надо раскрывать ветки при перетаскивании элемента. Ставить айдишнеки не очень.
Но как видишь в примере по ссылке, я там создаю динамичский айди и не надо никакой жыквиэри.

Цитата:
Сообщение от toly84 Посмотреть сообщение
+ можно выбрать по тегу.
перебрать, может, а не выбрать?
Гость
13 - 07.12.2012 - 18:46
12-Гавайские субтитры > именно выбрать.

не надо, так не надо. я уже говорил про вкусы.
Гость
14 - 07.12.2012 - 18:53
Цитата:
Сообщение от toly84 Посмотреть сообщение
именно выбрать.
byTagName? Там ведь массив возвращается.
Или я чего-то не догоняю.
В общем, если можно сделать сабж без id и без задавания имени и т.п., работая чисто с объектом this, то рассказывайте.
Гость
15 - 07.12.2012 - 19:58
14-Гавайские субтитры > все что нужно в документации jQuery
Гость
16 - 07.12.2012 - 20:09
15-toly84 >
это мне известно, но я у Вас спрашиваю.
Гость
17 - 07.12.2012 - 20:50
16-Гавайские субтитры > я разве нанялся к кому-то?
18 - 07.12.2012 - 21:19
не хотел ничего писать, учитывая автора :) но когда прочитал, что предлагают подключать jquery из-за такой ерунды, не выдержал.
Код

<script type="text/javascript">

var ident_timer = false;

function fstart( obj )
**
var obj_link = obj;
obj.style.color='red';
ident_timer = setTimeout( function()** if ( ident_timer )** obj_link.click(); ** **, 1000);
**

function fend( obj )
**
obj.style.color='';
if ( ident_timer )
**
clearTimeout( ident_timer );
**
ident_timer = false;
**

</script>

<div>
<a href="http://yandex.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко</a>
<br>
<a href="http://google.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко 2</a>
</div>
Гость
19 - 07.12.2012 - 21:43
18-Искусственный Интеллект1 >
да, лучше бы молчал и дальше. =)
Элементы лежат близко друг к другу, и ident_timer может перекрываться.
Не все так просто как кажется.

ЗЫ
и вообще, выше была дана ссылка на решение, и там есть и этот вариант.
20 - 07.12.2012 - 21:55
19-Гавайские субтитры > вот поэтому и не хотел помогать :)
Напиши html код, при котором не будет работать мой код.
Если не напишешь, то ты - трепло! :)
Гость
21 - 07.12.2012 - 22:15
20-Искусственный Интеллект1 >
пожалуйста:
<a href="http://yandex.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко
<br>
<a href="http://google.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко 2</a>
</a>

надеюсь, осилишь =)
22 - 07.12.2012 - 22:30
21-Гавайские субтитры > даже с твоим г*вно-кодом работает (хотя чего от тебя еще ожидать :) ты только такое и может делать:) ) без всяких изменений :), просто изменил html-код, javascript оставил как есть.

<script type="text/javascript">

var ident_timer = false;

function fstart( obj )
**
var obj_link = obj;
obj.style.color='red';
ident_timer = setTimeout( function()** if ( ident_timer )** obj_link.click(); ** **, 1000);
**

function fend( obj )
**
obj.style.color='';
if ( ident_timer )
**
clearTimeout( ident_timer );
**
ident_timer = false;
**

</script>

<div>
<a href="http://yandex.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко
<br>
<a href="http://google.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко 2</a>
</a>
</div>

и нормально все работает :)
23 - 07.12.2012 - 22:35
Но чтобы вооще все точняк было, и ты не усык*лся тут, приговаривая, что у тебя все не так просто :), немного подкорректировал код:

<script type="text/javascript">

var ident_timer = false;

function fstart( obj )
**
var obj_link = obj;
obj.style.color='red';
if ( ident_timer )
**
clearTimeout( ident_timer );
**
ident_timer = setTimeout( function()** if ( ident_timer )** obj_link.click(); ** **, 1000);
**

function fend( obj )
**
obj.style.color='';
if ( ident_timer )
**
clearTimeout( ident_timer );
**
ident_timer = false;
**

</script>

<div>
<a href="http://yandex.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко
<br>
<a href="http://google.ru/" onmouseover = "fstart( this );" onmouseout="fend( this );">ссылко 2</a>
</a>
</div>
Гость
24 - 07.12.2012 - 23:30
Походу, ИИ дурачок. Причом нервный. =)
Гость
25 - 07.12.2012 - 23:33
23-Искусственный Интеллект1 >
главное, клаву не сломай =))
И прочти №5
26 - 07.12.2012 - 23:57
25-Гавайские субтитры > я понимаю, что мозг твой слабенький, ты стараешься понять, но ничего у тебя не получается! :) Ты не в силах даже признать что мой код нормально работает :) Но попробуй хоть раз в жизни напрячь свой неразвитый мозг, и скопировать мой код и вставить его в свою страничку, а потом проверить его в браузере! Наверное на это у тебя мозга хватит? :) Или ты настолько туп, что не можешь даже выполнить копирование текста, а потом его вставить в другой текст?! :)
Гость
27 - 08.12.2012 - 00:12
Цитата:
Сообщение от Искусственный Интеллект1 Посмотреть сообщение
25-Гавайские субтитры &gt; я понимаю, что мозг твой слабенький, ты стараешься понять
слабость могза можно определить хотя бы по тому, как ты читаешь сабж.
По сабжу твой метод не прокатит. Хоть убейся.
Тем более уже было сказано про это еще в №4.
Если бы кое-то еще умел читать.... =))
28 - 08.12.2012 - 13:01
27-Гавайские субтитры > конкретно код покажи, в котором мой метод не работает. То есть давай доказательства, а так это всё пустые слова :)
Гость
29 - 08.12.2012 - 18:17
28-Искусственный Интеллект1 >
уважаемый, я уже не знаю как вам разжевывать, где и что не работает. Гиблое дело. =)

ЗЫ
кстати, вы кудкудахнули "Напиши html код, при котором не будет работать мой код. Если не напишешь, то ты - трепло! :)"
я вам написал код, при котором ваш код не работает, а вы даже не извинились за "трепло". =)
30 - 08.12.2012 - 21:28
29-Гавайские субтитры > хочешь извинений? Пожалуйста :)
Гавайские субтитры, извини, но ты - трепло! :)
Гость
31 - 08.12.2012 - 21:39
30-Искусственный Интеллект1 >
ты неправ. Твой код веть не работает в приведенном там примере.
Хотя ты неадекват, это уже заметно, все равно не согласишся, что ты неправ.

Ты же, кстати, даже на условия в сабже внимания не обратил. И к тому же в №4 есть такой же самый пример какой дал ты. Наверное ты оттудова его и слямзил =)))
В общем, ты неадекватный немного.


К списку вопросов






Copyright ©, Все права защищены