javascript onkeydown 为啥只能执行一次,再次触发却无效了呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript onkeydown 为啥只能执行一次,再次触发却无效了呢?相关的知识,希望对你有一定的参考价值。

<html>
<head>
<title>无标题文档</title>
</head>
<script type="text/javascript">
var s=1;
function keydown(evt)
var evt=event;
if(evt.keyCode==40)
s+=s;
document.write(s);
return false;


</script>
</head>
<body onkeydown="keydown(event)">
</body>
</html>

参考技术A 因为document.write是流输出. 你把它写在后触发的事件里一旦函数执行到你语句中的document.write(s);整片页面就只剩一个s的结果了. 把那句改成document.body.innerHTML += s;就成了.本回答被提问者采纳 参考技术B 楼上说法对的
<html>
<head>
<title>无标题文档</title>
</head>
<script type="text/javascript">
var s=1;
function keydown(evt)
var evt=event;
if(evt.keyCode==40)

document.body.innerHTML = s; //s不用自加,document.write是流输出,你若用alert(s)输出也行

s++; //你是想统计点击的次数吧,那就不是s+=s了,是s++触发一次onkeydown就自加一次

return false;


</script>
</head>
<body onkeydown="return keydown(event)">
</body>
</html>

JavaScript onkeydown事件入门实例(键盘某个按键被按下)

JavaScript onkeydown 事件

用户按下一个键盘按键时会触发 onkeydown 事件。与 onkeypress 事件不同的是,onkeydown 事件是响应任意键按下的处理(包括功能键),onkeypress 事件只响应字符键按下后的处理。

提示

Internet Explorer/Chrome 浏览器使用 event.keyCode 取回被按下的字符,而 Netscape/Firefox/Opera 等浏览器使用 event.which。

onkeydown 获取用户按下的键

下面是一个利用 onkeydown 事件获取用户按下键盘按键信息的例子:

复制代码代码如下:

<html>
<body>
<script type="text/javascript">

 

function noNumbers(e)
{
    var keynum;
    var keychar;

    keynum = window.event ? e.keyCode : e.which;
    keychar = String.fromCharCode(keynum);
    alert(keynum+‘:‘+keychar);
}

</script>
<input type="text" onkeydown="return noNumbers(event)" />
</body>
</html>

 

如上面例子所示,event.keyCode/event.which 得到的是一个按键对应的数字值(Unicode 编码),常用键值对应如下:

 

数字值实际键值
48到57 0到9
65到90 a到z(A到Z)
112到135 F1到F24
8 BackSpace(退格)
9 Tab
13 Enter(回车)
20 Caps_Lock(大写锁定)
32 Space(空格键)
37 Left(左箭头)
38 Up(上箭头)
39 Right(右箭头)
40 Down(下箭头)

 

在 Web 应用中,常常可以看到利用 onkeydown 事件的 event.keyCode/event.which 来获取用户的一些键盘操作,从而运行某些运用的例子。如在用户登录时,如果按下了大写锁定键(20),则加以提示大写锁定;在有翻页的时候,如果用户按下左右箭头,触发上下翻页等。

获得 Unicode 编码值之后,如果需要得到实际对应的按键值,可以通过 Srting 对象的 fromCharCode 方法(String.fromCharCode())获得。注意,对于字符获得的始终是大写字符,而对于其他一些功能按键,得到的字符可能不太易阅读。

 PS:这里再为大家推荐一款关于JS事件的在线查询工具,归纳总结了JS常用的事件类型与函数功能:

javascript事件与功能说明大全:

http://tools.jb51.net/table/javascript_event

以上是关于javascript onkeydown 为啥只能执行一次,再次触发却无效了呢?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript onkeydown事件入门实例(键盘某个按键被按下)

JavaScript 在JavaScript中仅检测onkeydown / onkeyup / onkeypress上的实际文本更改

javascript中关于onkeydown的值总是返回229问题

为啥我的 Javascript 函数只能工作几次?

用JS限制文本框只能输入数字,并给予提示,(纯JavaScript)

03JavaScript程序设计修炼之道_2019-07-02_20-11-09_ 2019-07-02_21-28-28 常用事件(onkeydown...)offsetclientscro