var isPressed =0;
document.body.onkeypress = function(evt)
{
  evt = evt || window.event;

    if (evt.keyCode!=='undefined') {
        // Do your stuff here
        isPressed = 1;
        console.log(isPressed);//Here it gives 1
    }
//return isPressed;
}
result = navigator.appVersion +"|"+n+"|"+getStyle(mydiv,'opacity')+"|"+history.length+"|"+metarefesh+"|"+hasFocus+"|"+navigator.platform+"|"+parent.top.document.referrer+"|"+activexenable+"|"+javaEnabled+"|"+hasFlash+"|"+navigator.plugins.length+"|"+ hasMouseMoved+"|"+isClicked +"|"+**isPressed**+"|"+isresized+"|"+isScrolled+"|"+getStyle(mydiv,'zIndex');


console.log(result);
    console.log(isPressed)//即使我按下一个键并将其更改为1。

如果我在有问题的if循环中执行console.log(isPressed),它会起作用。这是我不知道的范围问题。请帮忙。

提前致谢

最佳答案

问题是同步之一。您的代码读取为:


  按下键时,将isPressed设置为1
  
  显示isPressed的值


第一条指令只是说明以后会发生什么并完成。在按下任何键之前,第二条指令立即执行,因此显示为0。如果要执行第三条指令:

window.setTimeout(function(){console.log(isPressed)}, 3000);


并在页面加载后立即通过按键(在3秒钟之前),您会看到isPressed设置为1的日志。

如果在按下某个键后还需要执行其他逻辑,则需要将其放在注释“在这里做你的东西”中。

10-04 21:20