
前言:有些事情看上去简单甚至于平淡无奇,比如说爱情或者我们的生活可实际上却很复杂。js里面的event也是一样,不信就打印一下一个平淡无奇的onclick里面包含的event,只要在方法内传入参数event,或者e,还有ev然后打印,你就会发现一个新的天地。
核心内容:多种事件的运用场景解析
开始了
1吹牛逼
2吹牛逼
3也许我别来,你自然无恙
A:复杂多样的鼠标事件
应用:鼠标事件很多,平时用个点击就以为用过那就大错特错了,鼠标事件不仅有原生的点击,双击,移动,进入,移出,悬浮,可以打印event里面的type查看,还有一些比如jq封装的事件,这些事件而且会相互触发,比如移动move是最容易被其他事件触发,或者原生的拖拽事件,不仅有自己的事件,而且会触发元素上的很多其他事件。
B:为什么会这样呢?
解析:第一本身不同事件类型但是相近的鼠标 *** 作就会同时触发,第二在多层dom结构中的事件,由于本身事件的冒泡机制,由最底层的元素向上冒泡,到父元素到document到window,以至于类似事件不同方法但是同时触发
C:怎么解决
办法:比如现象一:只想触发最底层的元素的点击事件,不触发其父元素的点击事件,解决方案阻止冒泡。现象二:类型相近事件相互触发,导致方法重复执行,解决方案在易促发的事件的方法中可以加入条件判断,是否已经执行过相同 *** 作,如果有要么直接return,如果还有其他 *** 作判断,可以将可能重复的那个 *** 作进行重置。现象三:原生方法事件以及简单事件相互交叉影响导致最后鼠标事件失灵,定义的方法不能执行,页面不可控制,解决方案单个功能实现后进行方法设为null如domonclick=null,然后设置dom对象释放捕获。
event事件实在太多太复杂了,正如人生一样,可是有时候多一点细心多一点耐心,没事多打打断点和测试,我们会看得更加清晰,正如我若别来,你自然无恙,越是纠结,越是沉沦,往往简单最好。
事件人生,人生事件,简单复杂,复杂简单,一正一反,经历了自然会成长,花香了自然蝶飞舞。
<div id=cd>
<canvas width="300" height="300" style="border:1px solid #c3c3c3;"></canvas>
</div>
<scripr>
var pp=documentgetElementById("cd");
pponclick=function(e){
e=e||event;
var x=eclientX-ppoffsetLeft;//获取点击后x的坐标
var y=eclientY-ppoffsetTop;//获取点击后y的坐标
alert(x);
alert(y);
}
</scripr>
你是说 efromElement 和 erelatedTarget
relatedTarget 看这里:
>
直接用js
documentgetElementById(id)onclick=function(){}//内容写在函数体里
或者用jquery
$("#a")click(function(){ });
这个好办么。。
你的每一个INPUT不是都有VALUE么。。
那么你在加载的时候可以给每个INPUT在绑定事件啊。
如下
//初始化计算器
function InitCalculator()
{
//用来获取按钮数组
var arrButton = documentgetElementsByName("input");
//遍历数组为按钮添加事件
for(var i=0;i<arrButtonlength;i++)
{
var currBtn = arrButton[i];
//如果不是按钮,则继续下一个(可能是计算器上的文本显示框)
if(currBtntype != "button")
continue;
var strBtnVal = currBtnvalue;
switch(strBtnVal)
{
case "+":
currBtnclick=function(){switchFun("+")}
bareak;
case "-":
currBtnclick=function(){switchFun("-")}
bareak;
case "":
currBtnclick=function(){switchFun("")}
bareak;
case "/":
currBtnclick=function(){switchFun("/")}
bareak;
case "=":
currBtnclick=function(){switchFun("=")}
bareak;
}
}
}
//给按钮绑定的事件
funciton switchFun(strFunName)
{
switch(strBtnVal)
{
case "+":
//调用计算加法的方法
//call addition funtion
bareak;
case "-":
//调用计算减法的方法
//call subtration funtion
bareak;
case "":
//and so on
bareak;
case "/":
//and so on
bareak;
case "=":
//and so on
bareak;
}
}
$(function(){
$("input")change(function(){
$("button")click();
})
})
再对按钮设置一个点击时的函数,就OK了!望采纳~
以上就是关于前端js之event事件(一)全部的内容,包括:前端js之event事件(一)、js如何获取canvas标签中自己画的图形的单击事件 - HTML5技术探讨 -、JS事件onmouseover获取上一个元素对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)