javascript如何给事件处理函数传递参数

JavaScript0166

javascript如何给事件处理函数传递参数,第1张

方法一:通过事件在html中的内联方式来传递参数(假定变量x是参数,下同):

<input type="button" value="点我" onclick="var x=123test(x)"/>

<script>

function test(x){

   alert(x)

}

</script>

方法二:通过全局变量来传递参数:

<input id="abc" type="button" value="点我"/>

<script>

var x=123

window.onload=function(){

   document.getElementById("abc").onclick=function(){

      alert(x)

   }

}

</script>

方法三:通过对象的自定义属性来传递参数:

<input id="abc" type="button" value="点我"/>

<script>

window.onload=function(){

   var abc=document.getElementById("abc")

   abc.x=123

   abc.onclick=function(){

      alert(this.x)

   }

}

</script>

方法四:利用闭包:

<input id="abc" type="button" value="点我"/>

<script>

window.onload=function(){

   (function(x){

      document.getElementById("abc").onclick=function(){

         alert(x)

      }

   })(123)

}

</script>

暂时就想到这么多了,肯定还有其他方法的。

因为ev是事件的参数啊!在ev中包含了事件触发时的参数,比如click事件的ev中包含着.e.pageX,e.pageY,keydown事件中包含着ev.keyCode等,在ie中,ev是全局的可以通过window.event来获取,在其他浏览器中都是作为参数传入的。

所以好多事件函数都是这样写:

mydiv.onclick = function(ev){

if(!ev){ev = window.event} //这句也可以简写成:ev=window.event||ev

alert(ev.pageX+","+ev.pageY)

}

如果event没有在其他地方被定义的话。

这样写的目的是为了实现IE和FF中event的传递。

因为IE中的event是全局的,公用的,相当于window.event,所以可以不写,

而FF中的event则是必须存在事件中,必须要写。

为了都能在两个浏览器上正常运行,所以加了event.

这里的event在IE上指window.event简写event,所以一定要写event这个。

在FF中则是事件onchange固有的参数e,所以如果是FF浏览器,则可以随便写。

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。

event对象只在事件发生的过程中才有效。

event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。

例子

下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。

code<HTML>

<HEAD><TITLE>Cancels Links</TITLE>

<SCRIPT LANGUAGE="JScript">

function cancelLink() {

if (window.event.srcElement.tagName == "A" &&window.event.shiftKey)

window.event.returnValue = false

}

</SCRIPT>

<BODY onclick="cancelLink()">

下面的例子在状态栏上显示鼠标的当前位置。

code<BODY onmousemove="window.status = 'X=' + window.event.x + ' Y=' + window.event.y">

属性:

altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX,

screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y

1.altKey

描述:

检查alt键的状态。

语法:

event.altKey

可能的值:

当alt键按下时,值为 TRUE ,否则为 FALSE 。只读。