js var event = window.event || e; var ele = event.srcElement || event.target; 这两句什么意思?
2个回答
展开全部
js中,逻辑操作是用的逻辑短路机制。
|| 表示或,左右两个运算元有一个为true时结果为true。而逻辑短路的意思,就是当第一个运算元为true时,第二个运算元不需要判断了,因为也一定是true。而当第一个运算元为false的时候,第二个运算元同样也不需要判断,因为第二个为true时整体就为true,第二个为false时整体也是false。
在js中,逻辑短路的应用稍微拓展了。当运算元为true时,就将这个运算元赋值给变量。举第一条语句为例。当window.event为true,也就是window.event存在时(js中,未定义变量默认为undefined,表现为false),就将window.event赋值给前面的var event。而如果window.event不存在,则将第二个运算元,也就是||后面的e赋值给event。
这段代码应该是事件处理函数里的,兼容IE。因为在IE里,event必须加上作用域window,同时IE里获取发生事件的DOM节点用的是event.srcElement,其他浏览器用的是event.target。
讲的有点晦涩,不懂可以追问。
|| 表示或,左右两个运算元有一个为true时结果为true。而逻辑短路的意思,就是当第一个运算元为true时,第二个运算元不需要判断了,因为也一定是true。而当第一个运算元为false的时候,第二个运算元同样也不需要判断,因为第二个为true时整体就为true,第二个为false时整体也是false。
在js中,逻辑短路的应用稍微拓展了。当运算元为true时,就将这个运算元赋值给变量。举第一条语句为例。当window.event为true,也就是window.event存在时(js中,未定义变量默认为undefined,表现为false),就将window.event赋值给前面的var event。而如果window.event不存在,则将第二个运算元,也就是||后面的e赋值给event。
这段代码应该是事件处理函数里的,兼容IE。因为在IE里,event必须加上作用域window,同时IE里获取发生事件的DOM节点用的是event.srcElement,其他浏览器用的是event.target。
讲的有点晦涩,不懂可以追问。
追问
有点明白,又有点糊涂了。为什么要“window.event|| e“,e是这个里面的$box.onclick = function(e),后面还有var _className = ele.className是什么意思?
展开全部
楼上说的是对的,这主要是用来兼用ie用的:
比如:
let btn = document.getElementById('my-btn')
btn.onclick({function(event){
//注意! 这里的event在ie中,是不认识的,ie只认识window.event
var event = window.event || e //所以通过这种方式来兼容ie
})
同理 event.srcElement,我推荐你可以去看看JavaScript高级程序设计第十三章的事件对象部分,希望可以帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询