`
bulote
  • 浏览: 1315746 次
文章分类
社区版块
存档分类
最新评论

Js中的this和window.event.srcElement

 
阅读更多

我们先看一个简单的例子:

<input type="text" onblur="alert(this.value)"/>完全没有问题。

<wbr></wbr>

那么什么情况下不可以用?

fuction method()

{

<wbr><wbr> alert(this.value);</wbr></wbr>

}

<input type="text" onblur="method()"/>这个就不可以,因为method()被响应函数调用的函数。

<wbr></wbr>

那么这种情况下怎么办?

<wbr></wbr>

方法一:

fuction method(btn)

{

<wbr><wbr> alert(btn.value);</wbr></wbr>

}

<input type="text" onblur="method(this)"/>没问题!

<wbr></wbr>

方法二:

fuction method()

{

<wbr><wbr> alert(window.event.srcElement.value);</wbr></wbr>

}

<input type="text" onblur="method()"/>没问题!window.event.srcElement取得触发事件的控件

<wbr></wbr>

我们在看一个稍微绕一点的例子

<head>
<wbr><wbr><wbr> &lt;script type="text/javascript"&gt;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> function InitEvent() {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> var inputs = document.getElementsByTagName("input");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> for (var i = 0; i &lt; inputs.length; i++) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><strong>inputs[i].onblur = OnblurEvent;</strong><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr> function OnblurEvent() {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><strong><span style="color:#ed1c24">// OnblurEvent是onblur的响应函数,而不是被响应函数调用的函数</span></strong><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="color:#ed1c24"> <strong>// 所以可以用this来获取发生事件的对象</strong></span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> if (this.value.length &gt; 0) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> this.style.backgroundColor = "white";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> else {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> this.style.backgroundColor = "red";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr> &lt;/script&gt;<br> &lt;/head&gt;<br> &lt;body onload="InitEvent()"&gt;<br><wbr><wbr><wbr> &lt;input id="Text1" type="text" /&gt;<br><wbr><wbr><wbr> &lt;input id="Text2" type="text" /&gt;<br><wbr><wbr><wbr> &lt;input id="Text3" type="text" /&gt;<br> &lt;/body&gt;<br> &lt;/html&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

正如红色注释解说,上面可以用this获得当前触发事件的input。

分享到:
评论

相关推荐

    JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

    对于js初学着必须理解this和srcElement的应用,这也是面试中经常考到的。下面我们就通过几个示例来详细了解下

    js使用小技巧

    event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey ...

    桌面 分块 拖拽js代碼

    ev = ev || window.event; /* We are setting target to whatever item the mouse is currently on Firefox uses event.target here, MSIE uses event.srcElement */ var target = ev.target || ev....

    可拖动的table

    e = window.event; e.target = e.srcElement; e.layerX = e.offsetX; e.layerY = e.offsetY; } return e; } } window.onload = function(){ var obj = document.getElementById('draggable'); rDrag.init...

    ASP.NET程序中常用的三十三种代码.txt

     if (event.keyCode==13 && event.srcElement.type!=’button’ && event.srcElement.type! =’submit’ && event.srcElement.type!=’reset’ && event.srcElement.type!=’’&& event.srcElement.type!=’...

    在b/s开发中经常用到的javaScript技术整理

    在b/s开发中经常用到的javaScript技术... a[i].checked = window.event.srcElement.checked; } function checkItem(str) { var e = window.event.srcElement; var all = eval(\"document.hrong.\"+ str); if ...

    ASP.NET常用代码

    if(event.keyCode==13 && event.srcElement.type!='button' && event.srcElement.type!='submit' && event.srcElement.type!='reset' && event.srcElement.type!=''&& event.srcElement.type!='textarea'); event....

    客户端实验设计

    &lt;script language="javascript" type="text/javascript"&gt;//真正的js控制css菜单 function init(){ var arrayDiv=document.getElementById("levelmenu"); var divObj=arrayDiv.getElementsByTagName("div");//div ...

    my97日历控件

    if(Y.event===F||F){L.srcEl=F.srcElement||F.target;F.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el["My97Mark"]===true||L.el.disabled||($dp.dd&&P($dp.dd)!="none"&&$dp.dd.style.left!="-...

Global site tag (gtag.js) - Google Analytics