Javascript onFocus.затем onClick внутри функции - PullRequest
0 голосов
/ 02 мая 2011

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

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

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

Спасибо!

Ответы [ 4 ]

0 голосов
/ 03 мая 2011

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

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

onFocus="cbHover('checkbox')"

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

0 голосов
/ 02 мая 2011

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

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

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

document.getElementById(id).removeEventListener('click',function_name,true)
0 голосов
/ 02 мая 2011

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

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

$(document).ready(function(){
    $('.classname').click(function(){
       // what to do onclick
    });
});
0 голосов
/ 02 мая 2011

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

...