我有一个想法是创建一个对象Shout
,它应该从input元素中获取键盘消息onkeypress event
。当用户按下某个键时,会出现带有喊叫感叹号的警告框。
当我想访问新onkeypress function
内的对象属性时,会出现问题,因为关键字this
指的是输入元素本身而不是Shout
对象。
有什么方法可以解决它吗?
我不确定,如果这个概念是最佳的,但我把它当作一个实验。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>main</title>
</head>
<script>
var Shout;
function ShoutObj(_shout){
this.shout = _shout;
this.onkeypress = function(event){
alert(this.shout); // shout is undefined, because "this" refers to input element
}
}
function DoItFirst(){
var selector = document.getElementById("s1");
Shout = new ShoutObj("ouch");
selector.onkeypress = Shout.onkeypress;
}
</script>
<body onload="DoItFirst()">
<input id="s1" type="text"/>
</body>
</html>