为什么我们使用Javascript事件

为什么我们使用Javascript事件,javascript,events,Javascript,Events,我有一个获取键盘键值的函数。我想知道为什么我们需要在参数中使用事件 <form> Char: <input type="text" id="char" size="15" /> Keycode: <input type="text" id="keycode" size="15" /> </form> <script type="text/javascript"> var charfield=document.getElementBy

我有一个获取键盘键值的函数。我想知道为什么我们需要在参数中使用事件

<form>
Char: <input type="text" id="char" size="15" /> Keycode: <input type="text" id="keycode" size="15" />
</form>

<script type="text/javascript">

var charfield=document.getElementById("char")
charfield.onkeydown=function(event){
//var e=window.event || e
document.getElementById("keycode").value=event.keyCode
}

</script>
。线路

var e=window.event || e
用于Internet Explorer,它不接受事件函数的参数

有关更多信息,请参阅

charfield.onkeydown = function(event){ ... }
这里,参数event或有时仅用作e是event对象的一个实例。它是给定给该实例的变量名。触发事件时,事件对象会自动传递给事件处理程序

事件对象为事件处理程序提供了一些有用的属性和方法。

JS是事件驱动的,没有访问事件对象的权限将与您的自行车在F1比赛:您可以看到赛车===事件飞驰而过,但无法到达它们。。。很抱歉这个可怕的比喻,但你明白了。要增加/启用更多的交互性,您必须知道客户机在做什么,以便做出相应的响应。例如,如果用户单击,您可能想知道他在页面上单击的位置。所有这些以及更多都可以在事件对象中找到。没有这些,就像去打仗,手无寸铁,蒙着眼睛,手被绑在背后

考虑一下:在任何其他编程语言中,你都不会问同样的问题,事件是至关重要的,比如C++、C、java、ActionScript……,任何从用户那里直接得到它的输入,真的。 AlphaMale和chiborg的答案都告诉了你事件对象的用途。行var e=window.event | e;但是,在您的情况下不起作用,因为您的默认运算符混乱了。试试这个:

charfield.onkeydown = function (e)//call parameter e, rather then event
{
    e = e || window.event;//no var, as a parameter, it's already declared, won't set a global
    var key = e.keyCode || e.which;//another default operator here... thx to IE
    //and so on

    if (e.preventDefault)
    {
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
    e.returnValue = false;
    e.cancelBubble = true;
};
因此,这里有一个小列表,列出了您可以并且经常会在事件对象上使用的方法

e=e | | window.event;与e=e相同!==未定义?e:窗口事件;由于IE没有将事件对象传递给处理程序,因此您必须自己获取它,因为它是全局对象的属性,因此是窗口。。这对您不起作用的原因是,您让JS引擎在window.event IE only和e(您声明的)之间进行选择,实际的事件对象存储在事件参数中。您应该编写event=event | | window.event

第二行var key=e.keyCode | | e.which;获取按下的键的键代码,同样,IE和W3C已同意对此属性的调用不一致。事实上,只有一个属性是他们一直同意的:类型

最后,我调用了两个方法,允许您防止/阻止该事件。假设您要一个电话号码,用户开始输入文本。使用任何一个onkey*事件,您可以在该事件上拾取,并使用preventDefault、stopPropagation方法来停止接受输入。除此之外还有一点,但我现在不打算讨论。同样,大多数浏览器都有这些方法,但IE有一个不同的事件模型,随之而来的是IE在阻止事件时的不同表现:returnValue和cancelBubble属性,后者特别烦人,因为如果你想让事情不发生,你就把它设为真。。。但这只是我的意见


使用event参数可以做更多的事情,但简而言之,JS是事件驱动的,没有对event对象的访问权限会使您陷入瘫痪

你到底在问什么?不确定这是否是你想要的,但参数中的事件只是变量的名称。您可以为其命名任何您想要的名称。您可以使用参数event调用其上的方法,并知道例如preventDefault,它阻止事件的默认行为,如表单提交etcBecause keyCode是事件对象的方法,而不是独立函数。在JavaScript对象中查看此文档: