簡體   English   中英

參數不與window.onblur和onfocus一起使用的函數

[英]Function with arguments not working with window.onblur and onfocus

以下代碼不起作用

window.onfocus = welcome("John Doe");
window.onblur = bye("John Doe");

function welcome(name) {
    $("p").append("Welcome back " +name+ " <br>");
}

function bye(name) {
    $("p").append("Good bye " +name+ " see you soon <br>");
}

但是我注意到該代碼適用於不帶任何參數的自定義函數。 請參見下面的代碼。 以下代碼正在運行:

window.onfocus = welcome; //No Argument here so this code works
window.onblur = bye; //Same here... No argument for the function

function welcome(name) {
    $("p").append("Welcome back John Doe <br>");
}

function bye(name) {
    $("p").append("Good bye John Doe see you soon <br>");
}

我是jquery和javascript的新手,這些東西使我感到困惑。 有人可以解釋一下為什么它確實不起作用。 以及如何使用window.onfocus和onblur方法使帶有參數的自定義函數起作用。 (工作或不工作的原因對我來說更重要,因為我想了解其機制而不是加緊語法)

在為事件分配處理程序時, function-name后的()(parenthesis)將調用/調用函數。

使用anonymous-function而不是invoking-function然后調用/調用其中的function

在第二個(有效的)示例中,您將函數定義(函數的主體)分配為事件處理程序,因此在特定事件后調用函數。

 window.onfocus = function() { welcome("John Doe"); }; window.onblur = function() { bye("John Doe"); } function welcome(name) { $("p").append("Welcome back " + name + " <br>"); } function bye(name) { $("p").append("Good bye " + name + " see you soon <br>"); } 

嘗試$(window).focus()$(window).blur()事件:

 $(function() { $(window).focus(function() { welcome("John Doe"); }); $(window).blur(function() { bye("John Doe"); }); }); function welcome(name) { $("p").append("Welcome back John Doe <br>"); } function bye(name) { $("p").append("Good bye John Doe see you soon <br>"); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <p></p> 

您的代碼運行正常。 在頁面上添加JavaScript文件。

 window.onfocus = welcome("John Doe"); window.onblur = bye("John Doe"); function welcome(name) { $("p").append("Welcome back " + name + " <br>"); } function bye(name) { $("p").append("Good bye " + name + " see you soon <br>"); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <p></p> 

在JSFiddle上查看

兩種代碼對我來說都很好。 嘗試將jQuery代碼放在正文部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM