Js中的this和window.event.srcElement
我們先看一個簡單的例子:
<input type="text" onblur="alert(this.value)"/>完全沒有問題。
那麼什麼情況下不可以用?
fuction method()
{
alert(this.value);
}
<input type="text" onblur="method()"/>這個就不可以,因為method()是被響應函數調用的函數。
那麼這種情況下怎麼辦?
方法一:
fuction method(btn)
{
alert(btn.value);
}
<input type="text" onblur="method(this)"/>沒問題!
方法二:
fuction method()
{
alert(window.event.srcElement.value);
}
<input type="text" onblur="method()"/>沒問題!window.event.srcElement取得觸發事件的控件
我們在看一個稍微繞一點的例子
<head>
<script type="text/javascript">
function InitEvent() {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputs[i].onblur = OnblurEvent;
}
}
function OnblurEvent() {
// OnblurEvent是onblur的響應函數,而不是被響應函數調用的函數
// 所以可以用this來獲取發生事件的對象
if (this.value.length > 0) {
this.style.backgroundColor = "white";
}
else {
this.style.backgroundColor = "red";
}
}
</script>
</head>
<body >
<input type="text" />
<input type="text" />
<input type="text" />
</body>
</html>
正如紅色注釋解說,上麵可以用this獲得當前觸發事件的input。
最後更新:2017-04-02 22:16:02