参数不能与window.onblur和onfocus一起使用的函数

时间:2016-06-22 06:44:50

标签: javascript jquery function onblur 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方法创建带参数的自定义函数。 (工作或不工作的原因对我来说更重要,因为我想理解机制而不是填写语法)

4 个答案:

答案 0 :(得分:1)

  ()(parenthesis)之后

function-name将在您为事件分配处理程序时调用/调用该函数。

使用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>");
}

答案 1 :(得分:1)

尝试$(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>

答案 2 :(得分:0)

您的代码运行正常。在页面上添加js文件

请查看此链接jsfiddle.net/05c3qfzL/

答案 3 :(得分:0)

这两个代码对我来说都很好。尝试将jQuery代码放在body部分中。