[英]Function with arguments not working with window.onblur and onfocus
The following code isn't working 以下代码不起作用
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>");
}
However I noticed that this code works for custom functions that dont take any argument. 但是我注意到该代码适用于不带任何参数的自定义函数。 See code below.
请参见下面的代码。 The following code is working:
以下代码正在运行:
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>");
}
I am new to jquery and javascript and this stuff is confusing me. 我是jquery和javascript的新手,这些东西使我感到困惑。 Can someone please explain why exactly it isn't working.
有人可以解释一下为什么它确实不起作用。 and how can I make a custom function with arguments work with window.onfocus and onblur method.
以及如何使用window.onfocus和onblur方法使带有参数的自定义函数起作用。 (reason for working or not working is more important for me as I want to understand the mechanics rather than cramming up the syntax)
(工作或不工作的原因对我来说更重要,因为我想了解其机制而不是加紧语法)
()(parenthesis)
afterfunction-name
will invoke/call the function by the time you are assigning the handler to the events.在为事件分配处理程序时,
function-name
后的()(parenthesis)
将调用/调用函数。
Use anonymous-function
instead of invoking-function
and invoke/call the function
inside it. 使用
anonymous-function
而不是invoking-function
然后调用/调用其中的function
。
In your second(working) example, you are assigning function definition(body of the function) as a event-handler hence function is invoked after particular event. 在第二个(有效的)示例中,您将函数定义(函数的主体)分配为事件处理程序,因此在特定事件后调用函数。
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>"); }
Try $(window).focus()
and $(window).blur()
event: 尝试
$(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>
Your code is working fine. 您的代码运行正常。 Add JavaScript file on page.
在页面上添加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>
Both code is working fine for me. 两种代码对我来说都很好。 Try to put jQuery code in body section.
尝试将jQuery代码放在正文部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.