<body>
<div onclick="alert(1)">
<div onclick="alert(2)">
<div onclick="alert(3)">
<div onclick="alert(4)">
<div onclick="alert(5)">
<input id="oo" value="button" type="button" onclick="alert(6)">
</div>
</div>
</div>
</div>
</div>
</body>
<script>
var arrLayer = [2,5]
var ok =0
var pan =false
var obj=document.getElementById("oo")
function init(layer){
while (obj!=document.body){
obj=obj.parentNode
ok++
for(var i=0;i<layer.length;i++)
{
if(ok==layer[i])
{pan=true}
}
if(pan)
{pan=false
continue;}
else
{obj.onclick=function(e){
e=e||event
e.returnValue =false}}
}
}
init(arrLayer)
</script> 以上代码中
obj.onclick=function(e){
e=e||event
e.returnValue =false}
这段代码是匿名传入event对象的意思吗?我理解不了,有谁能深入的讲解下因为
<div>a</div>
document.getElementById("a").onclick=function(e){
e=e||event
e.returnValue =false}
的时候根本是无效代码,请大侠解答
<div onclick="alert(1)">
<div onclick="alert(2)">
<div onclick="alert(3)">
<div onclick="alert(4)">
<div onclick="alert(5)">
<input id="oo" value="button" type="button" onclick="alert(6)">
</div>
</div>
</div>
</div>
</div>
</body>
<script>
var arrLayer = [2,5]
var ok =0
var pan =false
var obj=document.getElementById("oo")
function init(layer){
while (obj!=document.body){
obj=obj.parentNode
ok++
for(var i=0;i<layer.length;i++)
{
if(ok==layer[i])
{pan=true}
}
if(pan)
{pan=false
continue;}
else
{obj.onclick=function(e){
e=e||event
e.returnValue =false}}
}
}
init(arrLayer)
</script> 以上代码中
obj.onclick=function(e){
e=e||event
e.returnValue =false}
这段代码是匿名传入event对象的意思吗?我理解不了,有谁能深入的讲解下因为
<div>a</div>
document.getElementById("a").onclick=function(e){
e=e||event
e.returnValue =false}
的时候根本是无效代码,请大侠解答
eventTag扮演的就是这个角色。
var event = eventTag||window.event;
这段代码可以根据浏览器的不同来得到正确的event,并在程序中使用,如果在IE4+下面使用这段代码,因为eventTag为null可以保证 event = window.event,但是如果在Firefox下运行的话则因为手工的给定了eventTag所以 var event = eventTag。根据对这一段代码的分析我们也不难看出可以对doEventThing方法进行如下的改造(因为 javascript允许我们在定义function的时候不明确指出参数的数量):
function doEventThing(){
var event = arguments[0]||window.event;
//other code
}
在Firefox下arguments[0]在特定的场合(没有显式的指定function参数数量的时候)被做为传播事件的参数来使用
javascript高级程序设计233页
dom准则说:event对象必须作为唯一的参数传递给事件处理函数
可以不把参数写出来,直接用 arguments[0] 这个貌似楼上已经说了
document.getElementById("a").onclick=function(){
alert()} ;吗?
比如说,你可以通过window.event.srcElement得到触发事件的对象