Фокус на Javascript . затем щелкните внутри функции

#javascript #html #events #listener

#javascript #HTML #Мероприятия #прослушиватель

Вопрос:

Я пытаюсь сделать так, чтобы, когда элемент попадает в фокус, он вызывал функцию, которая затем позаботится обо всех других событиях — вот мой код на данный момент.

 <span id="checkbox" class="checkbox" onFocus="cbHover(checkbox)"></span>

<script type="text/javascript">
    function cbHover(id) {
        if(document.getElementById(id).onClick) {
            document.getElementById(id).style.backgroundPositionY = '-63px';
        }
    }
</script>
  

Очевидно, что это не работает : ( Итак, есть ли способ поддерживать работу функции для прослушивания других событий?

Спасибо!

Комментарии:

1. У <span> них вообще есть событие фокусировки?? Когда это будет запущено?

Ответ №1:

Когда объект щелкнут, он уже сфокусирован. Вы можете либо пропустить onFocus и заменить его onClick, либо наоборот и удалить if(document.getElementById(id).onClick) из кода, потому что вам это не нужно.

Комментарии:

1. Хм, ну, вы видите, я пытаюсь сделать так, чтобы при наведении курсора мыши на диапазон функция выполняла OnMouseDown, onClick и т.д. — Поэтому функция должна оставаться запущенной до тех пор, пока мышь находится внутри области диапазона.

Ответ №2:

Вы можете использовать два события: onFocus и onLostFocus. В обработчике событий onFocus вы можете добавить событие onClick к элементу:

 document.getElementById(id).addEventListener('click',function_name,true);
  

В обработчике событий onLostFocus вы можете удалить событие

 document.getElementById(id).removeEventListener('click',function_name,true)
  

Ответ №3:

это плохая идея, даже если вы заставили ее работать, вы рискуете применить несколько нажатий на один и тот же элемент. лучше всего просто применить событие click к dom ready, я обычно использую jQuery

итак, если бы я делал это в jquery, я бы сделал это следующим образом

 $(document).ready(function(){
    $('.classname').click(function(){
       // what to do onclick
    });
});
  

Ответ №4:

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

Это должно быть

onFocus="cbHover('checkbox')"

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