2017-07-06 4 views
0

Ich habe die folgende Funktion in einer externen Javascript-Datei:Möchten Sie einblenden, wenn eine Funktion() aktiv ist/aufgerufen | Javascript

function waiting() {          
    if (state === WAITING && stateChanged) {    
     stateChanged = false; 
     map.draw(ctx); 
     //dialog("Press N to start a new game"); 
    } 
} 

Und hier die Codes in meine HTML-Datei:

<div id="pacman"> 
     <a id="startbutton" type="button" class="btn btn-start" value="">Start new game</a> 
     <script src="/pacman/pacman.js" type="text/javascript"></script> 
     <script src="/pacman/modernizr-1.5.min.js" type="text/javascript"></script> 
    </div> 

Javascriptcode in html-Datei ("#startbutton" fade out durch das Starten ein neues Spiel):

var game = document.getElementById("pacman"); 

    if (Modernizr.canvas && Modernizr.localstorage && 
     Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) { 
     window.setTimeout(function() { PACMAN.init(game, "<?php echo $root; ?>", 100); }, 0); 
    } 

    document.getElementById("startbutton").onclick = function(){ 
     PACMAN.startNewGame(); 
     $("#startbutton").fadeOut(); 

    } 

Aber ich möchte jetzt, wenn jemand Spiel vorbei ist (function waiting() aktiv ist), dass die "#startbutton" einblenden (anstelle der dialog("Press N to start a new game"); aus der function waiting()), damit er wieder abspielen kann, indem er erneut auf die "#startbutton" klickt. Ich habe verschiedene Kombinationen ausprobiert, aber nichts funktioniert. Wie kann ich damit umgehen? Danke für die Hilfe.

+0

Haben Sie '$ (" # startbutton ") versucht? FadeIn();'? – James

+0

Ja, ich habe es in diesen Kombinationen versucht: 1. 'document.getElementById (" startbutton "); \t \t \t wenn PACMAN.waiting() { \t \t \t \t $ ("# Startbutton") fadeIn(). \t \t \t} '' 2. document.getElementById ("Startbutton"). Onclick = function() { \t \t \t if (PACMAN.startNewGame()) { \t \t \t \t $ ("# Startbutton"). ausblenden(); \t \t \t \t \t \t \t} else if (PACMAN.waiting()) { \t \t \t \t $ ("# Startbutton") fadeIn(). \t \t \t} \t \t} 'Vielleicht sind sie Fehler im Code. In der 1 Kombination Chrome Inspector sagen Sie mir: Uncaught SyntaxError: Unerwarteter Bezeichner – Alba

+0

Sie sollten jQuery vor dem Skript mit der wartenden Funktion laden. oder benutze vanilla javascript, um auf den Startbutton zuzugreifen und einen Fadein-Effekt zu simulieren (was machbar ist) – taha

Antwort

0

Sie könnten wahrscheinlich mit Verklemmen es in die externe JS-Datei weg:

function waiting() {          
    if (state === WAITING && stateChanged) {    
     stateChanged = false; 
     map.draw(ctx); 
     //dialog("Press N to start a new game"); 
     $("#startbutton").fadeIn(); 
    } 
} 

Oder, wenn Sie es wünschen Super ordentlich sein, kann man abstrakt die jQuery-Material mit einer Funktion in der HTML-Datei definiert :

var game = document.getElementById("pacman"); 
// rest of your code 

function fadeInStartButton() { 
    $("#startbutton").fadeIn(); 
} 

und dann externer JS nennt diese Funktion (keine "unordentliche" jquery Anrufe in der externen js):

function waiting() {          
    if (state === WAITING && stateChanged) {    
     stateChanged = false; 
     map.draw(ctx); 
     if (fadeInStartButton) fadeInStartButton(); 
     else dialog("Press N to start a new game"); // if no function is defined, use the old way 
    } 
} 
+0

Es funktioniert! :-) Jetzt werde ich die super saubere Version versuchen, also werde ich mehr lernen. DANKE VIELMALS! – Alba

Verwandte Themen