閱讀97 返回首頁    go 微軟 go windows


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

  上一篇:go hibernate lazy——延遲加載
  下一篇:go Struts2中操作request,session,application的方法