[英]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>
兩種代碼對我來說都很好。 嘗試將jQuery代碼放在正文部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.