2016-04-18 19 views
0

Ich habe dieses Javascript, das eine Funktion nach einem 1,5-Sekunden-Timer aufruft. In Chrome funktioniert es großartig. In Firefox erhalte ich einen Referenzfehler: accessTransition ist nicht definiert. Irgendeine Erklärung warum dies der Fall ist?Reference Error: Funktion ist nicht definiert - Firefox

$('#next-btn').click(function(e) { 
    window.setTimeout(accessTransition, 1500); 

    function accessTransition() 
    { 
     $('.fact-intro-1').slideUp(1000); 
     $('.fact-text-1').css('display', 'inline-block'); 
    } 
} 
+2

Warum definieren Sie die 'accessTransition'-Funktion innerhalb des Event-Handlers? – j08691

+2

Möglicherweise ein Problem mit der Hebebühne? – ste2425

+2

Verrückte Idee, aber haben Sie versucht, den 'setTimeout()' Aufruf nach unten zu verschieben, wo Sie die Funktion definieren, die Sie an ihn übergeben? Sie vertrauen auf Chrome, um das für Sie zu hissen. – Antiga

Antwort

1
function accessTransition() 
{ 
    $('.fact-intro-1').slideUp(1000); 
    $('.fact-text-1').css('display', 'inline-block'); 
} 

$('#next-btn').click(function(e) { 
    window.setTimeout(accessTransition, 1500); 
} 

Sie sollten die Funktion außerhalb der Event-Handler definieren.

2

Versuchen mit:

function accessTransition() 
    { 
     $('.fact-intro-1').slideUp(1000); 
     $('.fact-text-1').css('display', 'inline-block'); 
    } 

$('#next-btn').click(function(e) { 
    window.setTimeout(accessTransition, 1500); 

} 

denke ich Timeout diese Funktion nicht bekommen können, weil es in Event-Handler-Funktion (JavaScript hat Funktion basiert scope) verschachtelt ist.

Verwandte Themen