• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

JavaScript funktioniert nur beim ersten Aufruf

kiro91

New member
Hi Leute,
ich habe ein Problem wo ich seit Tagen die nerven verloren habe und nicht weiter komme.
Uns war habe ich eine Webseite mit Benutzermodell entwickelt, wo Java Übungsaufgaben enthalten sind.
Der Benutzer kann diese Übungsaufgaben bearbeiten in dem er in das Leere Feld im Quellcode eingaben machen kann und mit der Kontrolle taste werden die Eingaben im System überprüft.
Also Praktisch werden die Eingaben zum Datenbank gesendet und von dort aus mit Java eine Fehleranalyse durchgeführt. Das Ergebnis der Analyse wird dann in einem Textdokument gespeichert und PHP kann die Fehlermeldung aus dem Textdokument auf der Webbrowser anzeigen.
Das alles funktioniert wunderbar.
Mein Problem:

Mein Problem liegt in JavaScript. Wenn der Benutzer auf Kontrolle klickt dann erscheint je nach Eingabe zb. eine Fehlermeldung. Also es wird ein Fenster geöffnet, praktisch ein Div Container, wo die Meldungen drin stehen. Also der Titel des Divs ist in rot gefärbt(mit JavaScript). In dem Div Container sind zwei weitere Div Container. Der eine zeigt die Java Kompilermeldung an und der andere die vom Java Analysierte Fehlermeldung (Also eine Hilfemeldung) an. Also wenn der Benutzer eine Falsche Eingabe macht, dann wird das Div Container mit der Kompilermeldung angezeigt und in diesem Div Container kann der Benutzer auf Hilfemeldung rüber wechseln und auch umgeckert.

Das JavaScript klappt beim ersten Aufruf wunderbar, aber sobald der Benutzer eine neue Eingabe macht und auf Kontrolle klickt, wird das Div Container zwar angezeigt, aber ohne die Funktionen des JavaScript,zb. der Titelbar wird nicht rot gefärbt, der Benutzer kann von Kompilermeldung auf Hilfemeldung nicht rüber wechseln etc. Es funktioniert nur wieder wenn ich die Webseite Aktualisiere....
Das komische ist, ich habe das ganze noch einmal in einem kleinen HTML Programm geschrieben, wo ich nur ein einfaches Button gemacht habe und die Funktionen des JavaScript da eingebunden habe, da klappt es wunderbar.

Ich vermute es hat was mit $_SESSION zu tun.....

Ich hoffe ihr könnt mir da weiterhelfen :)

Hier das JavaScript:

HTML:
<script type="text/javascript">
            $(function(){
                var ergebnis = "<?php echo $loesung?>";
                var Summe_Fehler = "<?php $_SESSION['counter']?>"
                
                if(ergebnis == 2 && Summe_Fehler < 10){
                    $("#Meldung").dialog({
                        width: 820,
                        height: 580,
                        buttons: {
                        Close: function(){
                            $(this).dialog('close');
                            }
                        }
                    });
                    
                jQuery("#Meldung").prev('.ui-dialog-titlebar').css({
                    'background': 'red',
                    'font-size' : '20px'
                });

                jQuery("#Meldung").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/Ausrufezeichen.png'  width = 40 height = 40 id='ausrufezeichen' />");
		
                
                $("#ausrufezeichen").css({
                    'position': 'absolute',
                    'margin-left' : '-420px',
                    'margin-top' : '-6px'
                });
                               
                }                
           
           }); 
           
           $(function(){
                var Summe_Fehler = "<?php echo $_SESSION['counter']?>";
                
                if(Summe_Fehler == 10){
                    $("#Aufgabe_Nicht_Geloest").dialog({
                        width: 800,
                        buttons:{
                        Close: function(){
                            $(this).dialog('close');
                            }
                        }
                    });
                     
                    jQuery("#Aufgabe_Nicht_Geloest").prev('.ui-dialog-titlebar').css({
                        'background': 'orange',
                        'font-size' : '20px'
                    });
                
                    jQuery("#Aufgabe_Nicht_Geloest").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/Ausrufezeichen.png'  width = 40 height = 40 id='ausrufezeichen' />");
		                
                    $("#ausrufezeichen").css({
                        'position': 'absolute',
                        'margin-left' : '-190px',
                        'margin-top' : '-6px'
                    });                    
                }
            });
           
           $(function(){
            var richtig = "<?php echo $loesung?>";
            var Summe_Fehler = "<?php echo $_SESSION['counter']?>"
            
            if(richtig == 1 && Summe_Fehler < 10){
                    $("#AufgabeRichtig").dialog({
                        width: 800,
                        buttons:{
                            Close: function(){
                                $(this).dialog('close');
                            }
                        }
                    });
                    
                    jQuery("#AufgabeRichtig").prev('.ui-dialog-titlebar').css({
                    'background': '#00ff00',
                    'font-size' : '20px',
                    'color' : 'black',
                    'border-color' : 'green'
                });
                }
                
                jQuery("#AufgabeRichtig").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/grunen-hakchen.png'  width = 40 height = 40 id='gruenHaken' />");
                $("#gruenHaken").css({
                    'position' : 'absolute',
                    'margin-left' : '-110px',
                    'margin-top' : '-6px'
                });
                
             });  
             
            function show(id) {
            if(document.getElementById) {              
                
                if(id == 'Kompilermeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'block';
                    document.getElementById('Kompilermeldung').style.display = 'none';
                    
                }
                
                if(id == 'Hilfemeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'none';
                    document.getElementById('Kompilermeldung').style.display = 'block';
                }
            }
        }
        </script>
 
Zuletzt bearbeitet von einem Moderator:
Wieso funktionieren die Funktionen des JavaScripts nur beim ersten Aufruf

Ich habe mehrere JavaScript Funktionen in einer PHP Datei.
Arbeite auch mit $_SESSION.
Ich habe ein Formular, wo der Nutzer eine Eingabe machen kann und je nach Eingabe, erscheint ein Fenster( Div Container) mit den JavaScript Funktionen.
Zb. wird der Titelbar des Div Containers in rot gefärbt etc.
Beim ersten mal nach dem Klick auf dem Button funktioniert alles einwandfrei, aber sobald der Nutzer nach der ersten Eingabe, nochmal was eingibt und auf dem Button klickt, dann funktionieren die Funktionen des JavaScriptes nicht mehr.
Wieso funktioniert das JavaScript nur beim ersten mal? Ich muss die Webseite jedes Mal neu aktualisieren damit es wieder klappt.

Ich probiere seit Tagen eine Lösung zu finden aber ohne Erfolg.

Falls das euch was bringt, das ist das JavaScript Code:

HTML:
<script type="text/javascript">
            $(function(){
                var ergebnis = "<?php echo $loesung?>";
                var Summe_Fehler = "<?php $_SESSION['counter']?>"
                
                if(ergebnis == 2 && Summe_Fehler < 10){
                    $("#Meldung").dialog({
                        width: 800,
                        buttons: {
                        Close: function(){
                            $(this).dialog('close');
                            }
                        }
                    });
                    
                jQuery("#Meldung").prev('.ui-dialog-titlebar').css({
                    'background': 'red',
                    'font-size' : '20px'
                });

                jQuery("#Meldung").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/Ausrufezeichen.png'  width = 40 height = 40 id='ausrufezeichen' />");
		
                
                $("#ausrufezeichen").css({
                    'position': 'absolute',
                    'margin-left' : '-420px',
                    'margin-top' : '-6px'
                });
                               
                }                
           
           }); 
           
           $(function(){
                var Summe_Fehler = "<?php echo $_SESSION['counter']?>";
                
                if(Summe_Fehler == 10){
                    $("#Aufgabe_Nicht_Geloest").dialog({
                        width: 800,
                        buttons:{
                        Close: function(){
                            $(this).dialog('close');
                            }
                        }
                    });
                     
                    jQuery("#Aufgabe_Nicht_Geloest").prev('.ui-dialog-titlebar').css({
                        'background': 'orange',
                        'font-size' : '20px'
                    });
                
                    jQuery("#Aufgabe_Nicht_Geloest").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/Ausrufezeichen.png'  width = 40 height = 40 id='ausrufezeichen' />");
		                
                    $("#ausrufezeichen").css({
                        'position': 'absolute',
                        'margin-left' : '-190px',
                        'margin-top' : '-6px'
                    });                    
                }
            });
           
           $(function(){
            var richtig = "<?php echo $loesung?>";
            var Summe_Fehler = "<?php echo $_SESSION['counter']?>"
            
            if(richtig == 1 && Summe_Fehler < 10){
                    $("#AufgabeRichtig").dialog({
                        width: 800,
                        buttons:{
                            Close: function(){
                                $(this).dialog('close');
                            }
                        }
                    });
                    
                    jQuery("#AufgabeRichtig").prev('.ui-dialog-titlebar').css({
                    'background': '#00ff00',
                    'font-size' : '20px',
                    'color' : 'black',
                    'border-color' : 'green'
                });
                }
                
                jQuery("#AufgabeRichtig").prev(".ui-dialog-titlebar").append("<img src='Image/Benutzerseite/grunen-hakchen.png'  width = 40 height = 40 id='gruenHaken' />");
                $("#gruenHaken").css({
                    'position' : 'absolute',
                    'margin-left' : '-110px',
                    'margin-top' : '-6px'
                });
                
             });  
             
            function show(id) {
            if(document.getElementById) {              
                
                if(id == 'Kompilermeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'block';
                    document.getElementById('Kompilermeldung').style.display = 'none';
                    
                }
                
                if(id == 'Hilfemeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'none';
                    document.getElementById('Kompilermeldung').style.display = 'block';
                }
            }
        }
        </script>
 
Zuletzt bearbeitet von einem Moderator:
- Als erstes formatier deinen Code bitte mal richtig und setze ihn in Code Tags ("
Code:
").
- Dann habe ich das Gefühl, dass du versehentlich den Code doppelt eingefügt hast
- Ich würde keine PHP Variablen im JS übergeben, dass empfinde ich als ganz schlechter Stil.

Zu deinem Problem:
Bei [CODE]var Summe_Fehler = "<?php $_SESSION['counter']?>"
fehlt ein echo und am Ende ein Semikolon.

Was steht denn beim zweiten Aufruf in der Counter-Session, eventuell wird diese ja mit fehlerhaften Werten befüllt. Für die weitere Recherche wäre der HTML/PHP Code noch hilfreich bzw. ein direkt Testlink.

- - - Aktualisiert - - -

Warum hast du ein zweites Thema mit gleichem Inhalt eröffnet? - Oder hab ich irgendwas übersehen?
http://forum.jswelt.de/allgemeines/59715-funktionieren-funktionen-javascripts-nur-beim-ersten-aufruf.html
 
Hi danke erstmal für deine Antwort.
Für das letzte, ja ich habe den gleichen Inhalt eröffnet, weil ich mir gedacht habe das mein erstes Inhalt zu kompliziert beschrieben habe.

-Also der Code ist nicht doppelt eingefügt
-Die erste Funktion wird immer angezeigt, wenn der Nutzer eine falsche Eingabe macht und die Fehlversuch Anzahl( indem fall $_SESSION['counter']) < als 10 ist. Also mit $_SESSION['counter'] zähle ich halt wie oft der Nutzer eine falsche Eingabe macht und
falls eine falsche Eingabe auftritt dann wird es hochgezählt, anschließend bis nur 10 dann bekommt der Nutzer die Lösung angezeigt und der $_SESSION['counter'] fängt wider bei Null an zu zählen.
-Die zweite Funktion zeigt die Lösung an wenn der Nutzer 10 Fehlversuche gemacht hat
-Die dritte Funktion zeigt das Ergebnis des Java- Codes ein, wenn der Nuzter es richtig programmiert hat und unter 10 Fehlversuchen es gelöst hat.

-Der "<?php $_SESSION['counter']?>" wird beim zweiten Aufruf hochgezählt wenn die Eingabe falsch ist.

Ich habe die Fehler den du mir gesagt hast korrigiert, aber trotzdem das gleiche.
Ich glaube es hat nicht mit dem Wert "<?php $_SESSION['counter']?>" zu tun....

Ich Poste dir mal den gesammten Code... ich du findest da den Überblick,
wie kann ich den ein Testlink anlegen? habe ich noch nie gemacht

- - - Aktualisiert - - -

PHP:
<?php
session_start();

$user = $_SESSION["username"];
$zahl = 0;
$controlle = 0;

$errorClass = 'keineEingabe';
$ArrayZeile = array();
$zaehler = 0;
$Aufgabe_Right = false;
$Kontroll_Aufgabe = 0;
$errorClass = ''; 
$Aufgabe31 = 31;
$Kontroll_Datentyp = true;
$Uebung3_Output_Zeile = "";
//--------------------------
$User_ID = "";
$Aufgabe = 31;
$loesung = 0;
$geloest = "";
$JA_zaehler = 0;
$Ja = "Ja";
$Nein = "Nein";
$Fehlermeldung = " ";
$Fehler_Anzahl = 0;
$Summe_Fehleranzahl = 0;
$MessageInfo = "";
$Summe_Fehler = 0;
$Summe_Fehler1 = 0;
$zahl_Right = 0;
$keinFehler = 0;
$klickZaehlen = 0;

if($Kontroll_Aufgabe == 0){
        $errorClass = 'normalField';
}

if(isset($_POST['eingabe']))
{

$eingabe = $_POST['eingabe'];

//Verbindung zu Datenbank erstellen
    $host = "localhost";
    $user1 = "root";
    $db = "userinformation";
    
    $connection = mysql_connect($host, $user1);
    if(!$connection){
	echo "Verbindung auf <b>" .$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
    }
	$selecting = mysql_select_db($db);
    if(!$selecting){
        echo "Verbindung auf <b>".$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
    }
    
    // id von $user an $kiro weiterleiten
    $abfrage = "SELECT id FROM nutzer WHERE username = '$user'";
    $ergebnis = mysql_query($abfrage);
    if($row = mysql_fetch_object($ergebnis)){
        $NutzerID = $row->id;
    }
    
    //eintrag in die Tabelle "nutzereingaben", mit seiner eingabe, id und Aufgabe
    $eintrag = "INSERT INTO nutzereingaben"
            . "(neID, eingabe, Nutzer_ID, Aufgabe)"
            . "VALUES"
            . "('$zahl', '$eingabe', '$NutzerID', '$Aufgabe31')";
    $eintragen = mysql_query($eintrag);
    mysql_close($connection);
    
    if($eintragen)
    {
        $file = "Uebung31Analyse";
        //$command = "\"C:\\Program Files\\Java\\jdk1.7.0_45\\bin\\javac\" ";
        //$command = $command."C:\\Users\\ON\\Documents\\NetBeansProjects\\WebTutoriel\\src\\webtutoriel\\$file.java";
        $command = "C:\\Users\\ON\\Documents\\NetBeansProjects\\WebTutoriel\\src\\webtutoriel\\compile.cmd $file";
        $res = exec($command);
        //$res = exec("C:\\Users\\ON\\Documents\\NetBeansProjects\\WebTutoriel\\src\\webtutoriel\\java.exe '$file'", $output);
        //$res = exec("C:\\Users\\ON\\Documents\\NetBeansProjects\\WebTutoriel\\src\\webtutoriel\\javac.exe -version", $output);
        //echo $output[0];

        
        $Hilfemeldung = fopen("c:/Users/ON/Documents/NetBeansProjects/WebTutoriel/Uebung3/For-Schleife/Hilfemeldung.txt","r");
        while(!feof($Hilfemeldung))
        {
            $Uebung3_Hilfemeldung_Zeile = fgets($Hilfemeldung,1024);
            $zaehler++;
        }
        
        $Output = fopen("c:/Users/ON/Documents/NetBeansProjects/WebTutoriel/Uebung3/For-Schleife/Output.txt","r");
        while(!feof($Output))
        {
            $Uebung3_Output_Zeile = fgets($Output,1024);
        }
    }

if($zaehler == 1)
{
    $errorClass = 'rightField';
    $Kontroll_Aufgabe = 1;
    $loesung = 1;
    
    $host = "localhost";
    $user1 = "root";
    $db = "userinformation";
	
    $connection = mysql_connect($host, $user1);
    if(!$connection)
    {
        echo "Verbindung auf <b>" .$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
    }
    $selecting = mysql_select_db($db);
    if(!$selecting)
    {
        echo "Verbindung auf <b>".$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
     }
     $abfrage2 = "DELETE FROM nutzereingaben WHERE Nutzer_ID = '$NutzerID'";
     mysql_query($abfrage2)OR die("Error: $abfrage2 <br>".mysql_error());
     mysql_close($connection);
}

if($zaehler > 1)
{
    $errorClass = 'errorField';
    $Kontroll_Aufgabe = 2;
    $loesung = 2;
}    
fclose($Hilfemeldung);
}

if($Kontroll_Aufgabe == 1)
{
        //Verbindung zu Datenbank ertstellen
        $host = "localhost";
        $user1 = "root";
        $db = "userinformation";
        $date = date("Y-m-d H:i:s");
        
        $connection = mysql_connect($host, $user1);
        if(!$connection){
            echo "Verbindung auf <b>" .$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
        }
        $selecting = mysql_select_db($db);
	
        if(!$selecting){
            echo "Verbindung auf <b>".$host. "</b> nicht möglich! <br /> Fehler: ".mysql_error;
        }
        
         //Nutzer_ID an $User_ID übergeben
         $abfrage_User = "SELECT id FROM nutzer WHERE username = '$user'";
         $ergebnis_User = mysql_query($abfrage_User);
         if($row = mysql_fetch_object($ergebnis_User)){
            $User_ID = $row->id;
         }
        //Kontrolle ob in der Tabelle Fehlerneu, Aufgabe 1 richtig gelöst worden ist.
        $Kontrolle_JA = "SELECT geloest FROM fehlerneu WHERE Nutzer_ID = '$User_ID' AND Aufgabe = '$Aufgabe' AND geloest = '$Ja'";
        $Ergebnis_Kontrolle_JA = mysql_query($Kontrolle_JA)OR die("Error: $Kontrolle_JA <br>".mysql_error());
        
        while($row =  mysql_fetch_object($Ergebnis_Kontrolle_JA)){
            $geloest = $row -> geloest;
            if($geloest == "Ja"){
                $JA_zaehler++;
            }
             
        }
        
        if($JA_zaehler < 1){
        //eintrag in Tabelle "Fehlerneu", wenn Aufgabe 1 richtig gelöst wird, UPDATE geloest = "Ja"
        $Ja_Geloest = "INSERT INTO Fehlerneu"
                    . "(Fehler_Neu_ID, Aufgabe, Fehlermeldung, Nutzer_ID, Fehler_Anzahl, geloest)"
                    . "VALUES"
                    . "('$zahl', '$Aufgabe', '$Fehlermeldung', '$User_ID', '$Fehler_Anzahl', '$Ja')";
        $Ja_Geloest_Eintragen = mysql_query($Ja_Geloest)OR die("Error: $Ja_Geloest <br>".mysql_error());        
        }
        
        //Nach dem die Aufgabe richtig gelöst ist, wird , falls vorhanden, Anzahl der Fehlversuche und deren Fehlermeldung ermittelt        
        if($Ergebnis_Kontrolle_JA){         
            $Fehlversuch = "SELECT SUM(Fehler_Anzahl)as Summe_Fehleranzahl, Fehlermeldung FROM fehlerneu WHERE Aufgabe = 31 GROUP BY Nutzer_ID, Aufgabe";
            $Eintrag_Fehlversuch = mysql_query($Fehlversuch)OR die("Error: $Fehlversuch <br>".mysql_error());
            
            $FehlermeldungAnzeige = "SELECT Fehlermeldung FROM fehlerneu Where Nutzer_ID = '$User_ID' AND Aufgabe = 31 AND geloest = '$Nein'";
            $Eintrag_FehlermeldungAnzeige = mysql_query($FehlermeldungAnzeige)OR die("Error: $FehlermeldungAnzeige <br>".mysql_error()); 
        }
        
        //Ermittlung der gesamt Fehleranzahl in Tabelle Fehlerneu                
        $abfrageRIGHT = "SELECT SUM(Fehler_Anzahl)as Summe_Fehleranzahl, Nutzer_ID, Aufgabe FROM fehlerneu WHERE Aufgabe = 31 GROUP BY Nutzer_ID, Aufgabe";
        $ergebnis_abfrageRIGHT = mysql_query($abfrageRIGHT)OR die("Error: $abfrageRIGHT <br>".mysql_error());
        if($row = mysql_fetch_object($ergebnis_abfrageRIGHT))
        {
            $Summe_Fehler = $row -> Summe_Fehleranzahl;
        }      

        //Kontrolle ob bereits in Tabelle Right_Exercise, Nutzer_ID und Aufgabe entahlten sind
        $Kontroll_Right_Exercise = false;
        $abfrageKontroll_Right_Exercise = "SELECT * FROM Right_Exercise WHERE Nutzer_ID = '$User_ID' AND Aufgabe = '$Aufgabe'";
        $ergebnis_Kontroll_Right_Exercise = mysql_query($abfrageKontroll_Right_Exercise);
           
        if($row = mysql_fetch_object($ergebnis_Kontroll_Right_Exercise))
        {
            $Kontroll_Right_Exercise = true;
        }
        
        //Wenn Aufgabe und NutzerID nicht in Tabelle "Right_Exercise" dann wird die gelöste Übungsaufgabe in die Tabelle eingetragen
        if($Kontroll_Right_Exercise == false)
        {
            //Eintrag, wenn mehr als ein Fehlversuch stattfindet
            if($ergebnis_abfrageRIGHT)
            {
                $RIGHT_eintrag = "INSERT INTO right_exercise"
                               . "(Right_EXERCISE_ID, Nutzer_ID, Aufgabe, Fehleranzahl, DATUM)"
                               . "VALUES"
                               . "('$zahl_Right', '$User_ID', '$Aufgabe', '$Summe_Fehler', '$date')";
                $RIGHT_eintragen = mysql_query($RIGHT_eintrag);
                    
            }
            
            //Eintrag ohne Fehlversuch
            if(!$ergebnis_abfrageRIGHT)
            {
                $RIGHT_eintrag = "INSERT INTO right_exercise"
                               . "(Right_EXERCISE_ID, Nutzer_ID, Aufgabe, Fehleranzahl, DATUM)"
                               . "VALUES"
                               . "('$zahl_Right', '$User_ID', '$Aufgabe', '$keinFehler', '$date')";
                $RIGHT_eintragen = mysql_query($RIGHT_eintrag)OR die("Error: $abfrageRIGHT <br>".mysql_error());  
            }
        }
            mysql_close($connection);
}

if(!isset($_SESSION['counter'])){
    $_SESSION['counter'] = 0;
}

if(isset($_POST['eingabe']))
{
    $Aufgabe_Nicht_Geloest2 = false;
    if($_SESSION['counter'] == 10){
         $Aufgabe_Nicht_Geloest2 = TRUE;
    }
    
    if($loesung == 2 and $_SESSION['counter'] < 10){
        $_SESSION['counter']++;
    }
    
    if($Aufgabe_Nicht_Geloest2 == TRUE){
        $_SESSION['counter'] = 0;
    }
    echo $_SESSION['counter'];
}


?>

- - - Aktualisiert - - -

Das ist ober ist nur der PHP Teil
 
Zuletzt bearbeitet von einem Moderator:
AW: Wieso funktionieren die Funktionen des JavaScripts nur beim ersten Aufruf

Hi kiro,

ich habe mir mal erlaubt, "Überblick" zu schaffen:

Code:
<script type="text/javascript">
	$(function(){
		...
	}); 
   
   $(function(){
		...
	});
   
	$(function(){
		...
	});  
	 
	function show(id){
		...
	}
</script>

Demnach: Die einzige Funktion, die für einen weiteren Aufruf im Client nach dem Laden zur Verfügung stehen würde, ist show() - alle anderen werden ausgeführt, wenn die Seite geladen wird. $(function(){}) ist das Equivalent zu $(document).ready() ...

Solltest Du also irgendwas aus den anderen Funktionen nochmals benötigen (ohne Seitenrefresh), darfst Du umschreiben (auf das Prinzip "show()")! :D

Beste Grüße
 
AW: Wieso funktionieren die Funktionen des JavaScripts nur beim ersten Aufruf

Hi danke für deine Antwort,
aber Funktion show() funktioniert leider auch nicht bei einer weiteren Aufruf
 
AW: Wieso funktionieren die Funktionen des JavaScripts nur beim ersten Aufruf

Zeig' doch mal einen Testlink, wo wir uns ansehen können, was da genau "nicht funktioniert".

PS: Ich habe den Verdacht, dass dir die Grenze zwischen serverseitiger und clientseitiger Programmierung nicht ganz klar ist.

- - - Aktualisiert - - -

So - Themen zusammengeführt, da es exakt das gleiche Problem ist.
 
Du hast doch irgendwo einen Server, auf dem du das dann irgendwann veröffentlichen willst. Da lädst du die HTML Dateien in einen (temporären) Ordner und gibst uns die URL dahin.
 
Hi kkapsner,
ich habe erstmal mit FileZilla versucht ein Server zu erstellen hat, aber hat leider nicht funktioniert. Mein Programm läuft zurzeit nur lokal.
Was an Webseiten angeht bin ich sehr neu in diesem Gebiet. Ich habe noch nie eine Webseite hochgeladen.
Ich wollte meine Datein hier auf die Webseite anhängen, aber es klappt Leider nicht, es kommt immer eine Fehlermeldung, entweder ist die Datei zu groß oder es ist ungültig. Kann ich dir die Datein per Dropbox oder per Email zukommen lassen ?
Weil eine andere Lösung fällt mir dabei nicht ein.... :)
 
kiro, wo soll denn die Sache später laufen? Lokal bei dir auf dem Rechner oder im Netz online? Und bitte keine Riesendateien anhängen. Zur Fehlersuche geht man hin und schmeißt aus seinem Code alles raus, was nicht nötig ist, um das Fehlverhalten zu zeigen (z.B. unnötige Formatierungen, unnötig lange Texte, Funktionen die damit nichts zu tun haben usw.). Und was dann übrig ist kann man z.B. bei Create a new fiddle - JSFiddle einstellen oder auf seinen eigenen Webserver in einen Testbereich hochladen oder hier in Code Tags in den Beitrag kopieren. Letzteres wird hier bevorzugt, soweit ich das beobachte.

E-Mail oder PM Support machen wir hier i.d.R. nicht.
 
Das ist meine Bachelorarbeit. Momentan braucht es nur lokal auf meinem Rechner zulaufen. Der Prof. selber wird es dann später auch Online stellen.
Ich habe jetzt ein ganz ganz kleines beispiel Programm erstellt, wo die Funktionen des JavaScriptes eingebaut sind. Das kleine beispiel Programm wollte ich anängen, auber ich kann keine PHP dokumente anhängen???? komisch.
hier nochman das beispiel Programm:

PHP:
<?php
$control = 0;

if(isset($_POST['GO'])){
    $control = 1;
}
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>TEST</title>
        <link rel = "stylesheet" type = "text/css" href = "Test_Design.css"/>
        <script type="text/javascript" src="js/jquery-1.9.1.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.10.3.custom.min.js"></script>
        <link rel = "stylesheet" type = "text/css" href = "css/ui-lightness/jquery-ui-1.10.3.custom.css">
    </head>
    <body>
        
        
        <?php
            if($control == 1){
        ?>
        <div id="Meldung" style="display:none" title="Ihre Eingabe ist Fehlerhaft">
            <div style="display: none" id="Hilfemeldung">
                <a href="" onclick="javascript:show('Hilfemeldung'); return false" style="color: white">Kompilermeldung Anzeigen</a>
                <h2>----Hilfemeldung----</h2>
                <p>Hilfemeldung</p>
            </div>
            
            <div style="display: block" id="Kompilermeldung">
                <a href="" onclick="javascript:show('Kompilermeldung'); return false" style="color: yellow">Hilfemeldung Anzeigen</a>
                <h2>----Kompilermeldung----</h2>
                <p>Kompilermeldung</p>
            </div>
        </div>
        <?php
        }
        ?>

        <form method = "post" action = "<?php echo $_SERVER['PHP_SELF'];?>">
            <input type = "submit" id = "schließen" name = "GO" value = "Kontrolle" class = "submit"/>
        </form>
</body>
</html>

und das JavaScript:

Code:
<script type = "text/javascript">
		 
    $(function(){
                var registerErfolg = "<?php echo $control; ?>"; 
                
                if(registerErfolg == 1){
                    $("#Meldung").dialog({
                        width: 800,
                        buttons: {
                        Close: function(){
                            $(this).dialog('close');
                            }
                        }
                    });
                    
                jQuery("#Meldung").prev('.ui-dialog-titlebar').css({
                    'background': 'red',
                    'font-size' : '20px'
                });
                               
                }                
           
           }); 

            function show(id) {
            if(document.getElementById) {              
                
                if(id == 'Kompilermeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'block';
                    document.getElementById('Kompilermeldung').style.display = 'none';
                    
                }
                
                if(id == 'Hilfemeldung'){
                    document.getElementById('Hilfemeldung').style.display = 'none';
                    document.getElementById('Kompilermeldung').style.display = 'block';
                }
            }
        }
                  

            
</script>

- - - Aktualisiert - - -

hier funktioniert das bei jedem aufruf.
 
Also ich habe eine Webseite entwickelt, wo java Übungsaufgaben entwickelt sind und je nach Eingabe des Users erscheint eine entsprechende Fehlermeldung.
Der User kann dabei zusätzlich aus der Kompilermeldung zur Hilfemeldung wechsel, was im beispiel Programm zu erkennen ist. Im Beispeil Programm funktioniert alles wunderbar.
Die Funktionen des JavaScriptes werden in jeder Aufruf ausgeführt und sind zu erkennen.
Aber in meinem eigentlichen Programm funktionieren die Funktionen des JavaScriptes nur bei dem ersten Aufruf. Bei dem zweiten Aufruf funktionieren die Funktionen des JavaScriptes nicht mehr. Es sei den ich aktuallisiere die Webseite erneut, dann klappt es. Aber das möchte ich nicht..... soll es auch nicht!

Ich weis echt nicht warum es nicht klappt. Habe einige Vermutungen, wie zb. wegen $_SESSION oder die funktionen haben kein onload(oder ähnliches)... habe paar sachen schon ausprobiert, aber ohne erfolg
 
Und nochmal: Alles in $(function(){}) läuft nur bei Seitenaufruf (DOMready; Seite vollständig geladen)- danach nicht mehr. Und da kann #Meldung eben nicht rot bei der zweiten Verwendung gefärbt werden und registerErfolg wird eben nur bei Seitenaufruf (load, reload, refresh - wie Du es nennen willst) geprüft.

Und die Funktion show() sprichst Du nirgends an - zumindest ist es nicht sichtbar. Aber womöglich hast Du in id was anderes stehen als in Deinen if-cases. Allerdings wundert mich für show(), dass Du nicht konsequent mit dem Framework jQ weiterarbeitest.

In allen Fällen hilft Dir die Entwicklerkonsole im Browser, denn in diese kannst Du eben Stati via console.log(VARIABLE) zeigen lassen.

Offtopic: Dass das eine Bachelorarbeit ist, rüttelt an meinem Realitätsverständnis im Rahmen praktischer Ausbildung als ehemaliger Ausbilder für Fachinformatiker der Anwendungsentwicklung in Hamburg. Sollte das also wirklich Dein Studium beenden, bin ich bis ins Mark erschüttert. Aber wenn ich kann, helfe ich Dir weiterhin ...
 
Folgende Fehlermeldung bei JS:
Failed to load resource: the server responded with a status of 404 (Not Found)
vll hilft das euch weiter
 
Zurück
Oben