我正在尝试这样做,当一个元素获得焦点时,它会调用一个函数,然后将处理所有其他事件 - 这是我现在的代码。
<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>
显然这不起作用:(那么有没有办法让函数继续运行来监听其他事件?
谢谢!
答案 0 :(得分:0)
单击对象时,它已经聚焦。你可以跳过onFocus并用onClick替换它,或者反过来从代码中删除if(document.getElementById(id).onClick)
,因为你不需要它。
答案 1 :(得分:0)
您可以使用两个事件:onFocus和onLostFocus。在onFocus事件处理程序中,您可以将onClick事件添加到元素:
document.getElementById(id).addEventListener('click',function_name,true);
在onLostFocus事件处理程序中,您可以删除事件
document.getElementById(id).removeEventListener('click',function_name,true)
答案 2 :(得分:0)
这是一个坏主意,即使你确实让它工作,你冒着在同一元素上应用多次点击的风险。你最好的选择是在dom上应用click事件我通常使用jQuery
所以,如果我在jquery中这样做,我会这样做
$(document).ready(function(){
$('.classname').click(function(){
// what to do onclick
});
});
答案 3 :(得分:0)
它不起作用的原因是传递的参数,应该用引号括起来。
应该是
onFocus="cbHover('checkbox')"
否则,javascript将复选框视为变量,并尝试传递变量的值为null。