stillbad
Goto Top

Javascript Funktion wird nicht "aufgerufen"

Hallo ich möchte eine Javascript AI von Code Bullet verbessern.
Ich dachte das ist eine gute Idee da ich Javascript lernen möchte und habe mir die ChessAI von ihm angeschaut und angefangen sie einbisschen umzuschreiben doch jetzt stehe ich vor einem Problem ich wollte das man direkt auf der Webseite festlegen kann welche Farbe die AI spielen soll und welche der Spieler.
Er hat dies in der sketch.js festgelegt mit
var whiteAI = false;
und
var blackAI = true;
nun habe ich die html datei wie folgt dafür angepasst.
<script>

function BlackAIenable() {
	if (blackAI) {
		alert("iam here")  
		var blackAI = false;
		runAIs();
                showAIs();
	else
		alert("i am not here")  
		var blackAI = true;
		runAIs();
		showAIs();
	}
}
function WhiteAIenable() {
	if (whiteAI) {
		alert("white here")  
		var whiteAI = false;
		runAIs();
	        showAIs();
        else
		alert("jds")  
		var whiteAI = true;
		runAIs();
		showAIs()
	}
}
</script>
</head>
<body>
<button onclick="WhiteAIenable()">Wei&szlig;e Ai ein/ausschalten</button>  
<button onclick="BlackAIenable()">Schwarze Ai ein/ausschalten</button>  
</body>
Doch es scheint so als ob die funktionen garnicht aufgerufen werden wenn ich auf einen der knöpfe drücke zum test habe ich die alert zeilen eingesetzt doch da mir auch die alerts nicht angezeigt werden gehe ich davon aus das diese garnicht aufgerufen werden.

Danke im Vorraus,
StillBad

Content-ID: 423648

Url: https://administrator.de/forum/javascript-funktion-wird-nicht-aufgerufen-423648.html

Ausgedruckt am: 17.03.2025 um 01:03 Uhr

Pjordorf
Pjordorf 01.03.2019 um 19:01:46 Uhr
Goto Top
Hallo,

Zitat von @StillBad:
auf einen der knöpfe drücke zum test habe ich die alert zeilen eingesetzt doch da mir auch die alerts nicht angezeigt werden gehe ich davon aus das diese garnicht aufgerufen werden.
Wo hast du diese html Seite geandert? Bei dir lokal oder auf den Webserver im Internet?

Gruß,
Peter
GNULinux
Lösung GNULinux 01.03.2019 um 20:57:11 Uhr
Goto Top
Werden sie nicht, weil dein Code mehrere Syntaxfehler enthält. Die geschweiften Klammern der If-Blöcke wurden geöffnet aber vor/nach dem else jeweils nicht wieder geschosssen/neu geöffnet. Das hätte dir ein Blick in die Browser-Konsole aber auch selbst verraten. Selbst bei JavaScript löst das einen Syntaxfehler aus.
StillBad
StillBad 01.03.2019 um 21:07:30 Uhr
Goto Top
Habe ich angepasst sieht jetzt so aus:
function BlackAIenable() {
	if (blackAI) {
		alert("iam here")  
		var blackAI = false;
		runAIs();
	}
	else
	{
		alert("i am not here")  
		var blackAI = true;
		runAIs();
		showAIs();
	}
}
function WhiteAIenable() {
	if (whiteAI) {
		alert("white here")  
		var whiteAI = false;
		runAIs();
	}
	else
	{
		alert("jds")  
		var whiteAI = true;
		runAIs();
		showAIs()
	}
}
Doch das hat auch nichts geändert Funktioniert immer noch nicht.
138810
Lösung 138810 01.03.2019 aktualisiert um 23:06:27 Uhr
Goto Top
Funktioniert immer noch nicht
Kein Wunder, Schussel, da fehlen jede Menge Semikolon's hinter den alerts und hinter showAIs().
Zeilen 3,9,17,23,26

Erste Devise beim Lernen von JavaScript: Arbeite exakt, vergessene Sprachelemente und Groß und Kleinschreibung werden dir nicht verziehen!

Außerdem bringt dir das Definieren der Variablen in den IF-Konstrukten nichts, die sind nach beenden wieder verschwunden, definiere sie global oder klassenbasiert, dann sind sie auch funktionsübergreifend verfügbar.

Ich empfehle dir dringend erst mal die Grundlagen von Javascript gründlich zu lernen und mit " kleinen " Übungsaufgaben anzufangen. Du scheinst dir da offensichtlich noch zu viel zuzumuten.
GNULinux
Lösung GNULinux 01.03.2019 um 22:36:31 Uhr
Goto Top
Du hast auch nur die Hälfte von dem gemacht, was ich gesagt habe. Wenn du nach Aufforderung nicht in der Lage bist einen Blick in die Devtools zu werfen, musst du noch sehr viel lernen junger Padawan.

Zitat von @138810:
Kein Wunder, Schussel, da fehlen jede Menge Semikolon's hinter den alerts und hinter showAIs().
Zeilen 3,9,17,23,26

Jain. Selikolons zu setzen gilt als Best Practice, da sie in Ausnahmefällen erforderlich sind und Minifying erleichtern. Ich mache das über Linter auch so, wenns unbedingt JS sein muss. Aber grundsätzlich sind sie optional. Bei seinem simplen Code macht es keinen Unterschied. Außer der Code läuft in alten IE Browsern. Dass das jemand tut, vor allem um JS zu lernen, bezweifle ich jetzt mal.
138810
138810 01.03.2019 aktualisiert um 23:04:26 Uhr
Goto Top
Jepp, aber wenn er sie schon in den anderen Zeilen setzt, dann auch einheitlich und nicht so ein Mischmasch, das fördert nur den Höddel.
StillBad
StillBad 01.03.2019 aktualisiert um 23:18:15 Uhr
Goto Top
Danke euch beiden habe es jetzt so weit das es die funktion richtig aufruft.
Noch eine Frage gibt es eine lösung die variable besser festzulegen zb. über ein Cookie oder ähnliches?
Ach und ich hab die Semikolons ergänzt!

Danke,
StillBad
ashnod
ashnod 02.03.2019 um 05:40:16 Uhr
Goto Top
Moin ..

Zitat von @StillBad:
Noch eine Frage gibt es eine lösung die variable besser festzulegen zb. über ein Cookie oder ähnliches?

Schau mal hier: https://www.w3schools.com/js/js_variables.asp

Die Seite ist mein persönlicher Favorit um schnell mal was nachzusehen und das für deutlich mehr als nur JS.

VG
StillBad
StillBad 02.03.2019 um 13:16:34 Uhr
Goto Top
Danke die Seite ist sehr Informativ.
StillBad
StillBad 02.03.2019 aktualisiert um 22:03:22 Uhr
Goto Top
Kleiner Zwischen stand habe es jetzt noch mal vollkommen geändert und zwar wie folgt:
<body onload="AIChoose()">  

<center>
<h1 style="color:aqua" id="PrintAI"></h1>  
<button onclick="reload()" style="color:green;" class="btn" name="btn" id="btn">Nochmal</button>  
</center>

<script>

var txt, cs;

function AIChoose() {
  swal("Möchtest du gegen eine AI spielen?", "Ja oder Nein?", {  
    icon: "warning",  
    closeOnEsc: false,
    buttons: {
      cancel: "Nein",  
      confirm: {
        text: "Ja",  
        value: "confirm",  
        visible: true,
        className: "",  
        closeModal: true,
      }

    },
  })
  .then((value) => {
    switch (value) {

      case "confirm":  
        blackAI = true;
        txt = "Sie spielen Weiß und die AI spielt Schwarz!";  
        swal("Ein Spieler!", "Sie haben den Ein Spieler modus ausgewählt sie spielen Weiß und die AI spielt Schwarz!", "info", );  
        showAI();
        break;

      default:
        blackAI = false;
        txt = "Es sind keine AIs eingeschaltet!";  
        swal("Zwei Spieler!", "Sie haben den zwei Spieler Modus ausgewählt!", "info", );  
        showAI();
    }
  });

}

function reload() {
  location.reload();
}

function showAI() {
  document.getElementById('PrintAI').innerHTML = txt;  
}


</script>
</body>
und
var whiteAI;
var blackAI;

Damit die AI noch nicht beim Popup anfängt zu spielen ^^

LG. und vielen Dank,
StillBad
138810
138810 03.03.2019 aktualisiert um 01:23:12 Uhr
Goto Top
Schwarz-braun ist die Haselnuss. B-)
StillBad
StillBad 03.03.2019 um 16:40:38 Uhr
Goto Top
Alte deutsche Volkslieder die geraten irgendwie immer mehr in vergessenheit.