<form action="" method=""> <input type="text" id="txt" /> <input type="radio" id="rad" /> <input type="checkbox" id="cBox" /> <input type="button" value="button" id="btn" /></form><script type="text/javascript"> var oTxt=document.getElementById("txt"); var oBtn=document.getElementById("btn"); oBtn.onclick = function(){ oTxt.focus(); }; oTxt.onfocus=function(){ alert("我获得焦点了"); }; </script>
3 回答
码农2号
TA贡献151条经验 获得超48个赞
因为你点击确定后,焦点还是没变,又触发了一次,往复循环。调试的话用console吧,网页需要的话,弹出一个提示也不错。非要用alert的话,立个flag啊,进入函数时候,判断flag值,flag==0时候flag==1,flag==1时候不执行函数后面的就行了。
pardon110
TA贡献1038条经验 获得超227个赞
基础知识:
onclick,onfocus 事件句柄 前者鼠标点击某个对象产生事件,后者元素获得焦点后执行事件
obj.focus() 给指定的元素设置焦点 (注只有能够响应用户操作额元素才可以设置焦点,input是其中之一)
分析:1.input文本类型获取焦点,出现弹窗 2.点击btn,会给文本类型input获取焦点。
所以明了:点击->焦点获取->弹窗出现 由于你点击之后,并没有提供后续的解除焦点在input:text上的事件绑定,所以弹窗一直存在。你这种情况,就好像开了一辆没有刹车器的车,只要开始了就停不下来。
Gotta
TA贡献53条经验 获得超16个赞
我猜是这样…… 当你点击alert的确定的时候……焦点会转到确定按钮上,alert消失后……焦点又回到了Input上,,所以再次触发onfocus事件……
都是猜的。。。。没有科学依据
添加回答
举报
0/150
提交
取消