2016-06-22 18 views
1

Der folgende Code funktioniert nichtFunktion mit Argumenten nicht mit window.onblur arbeiten und 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>"); 
} 

Allerdings bemerkte ich, dass dieser Code für benutzerdefinierte Funktionen arbeitet, das jedes Argument nicht. Siehe Code unten. Der folgende Code funktioniert:

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

Ich bin neu in Jquery und Javascript und dieses Zeug mich ist verwirrend. Kann mir bitte jemand erklären, warum es genau nicht funktioniert. und wie kann ich eine benutzerdefinierte Funktion mit Argumenten arbeiten mit window.onfocus und onblur Methode. (Grund für das Arbeiten oder nicht arbeiten, ist wichtiger für mich, wie ich die Mechanik verstehen wollen, anstatt die Syntax pauken)

Antwort

1

()(parenthesis) nach function-name wird aufrufen/rufen Sie die Funktion von der Zeit, die Sie den Handler zuweisen zu die Ereignisse.

Verwenden anonymous-function statt invoking-function und rufen/rufen Sie die function in seinem Inneren.

In Ihrem zweiten (funktionierenden) Beispiel weisen Sie die Funktionsdefinition (body der Funktion) als event-handler zu, daher wird die Funktion nach einem bestimmten Ereignis aufgerufen.

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

+0

Warum funktioniert die Aufruffunktion nicht? Warum nur anonyme Funktion erforderlich ist –

1

$(window).focus() und $(window).blur() Ereignis Versuchen:

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

0

Ihr Code gut funktioniert. js Datei auf Seite hinzufügen

überprüfen Sie bitte den Link jsfiddle.net/05c3qfzL/

+0

Aber funktioniert nicht wie erwartet. (sollte bei Unschärfe oder Fokus ausgeführt werden). –

0

Beide Code funktioniert gut für mich. Versuchen Sie, den jQuery-Code in den Body-Abschnitt einzufügen.

+0

Dies sollte ein Kommentar bitte sein – swiftBoy