#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.