方法一:通过事件在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 。只读。