• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

js funktioniert nicht

theoretisch

Mitglied
Hallöchen,
ich habe das Problem das ich hier eine js Datei geschrieben habe die leider kein bisschen funktioniert.
Mit Javascript habe ich erst vor kurzem angefangen mich damit zu beschäftigen... davor habe ich nur schon ein wenig Java programmiert... weshalb es durchaus sein kann das ich da ein wenig Code "vermischt" habe.
Mein js das ich geschrieben habe wird leider überhaupt nicht ausgeführt ( und ja die src in der html ist richtig angegeben =D )... und ich habe absolut keine Ahnung wieso nicht... habe schon mit alert alles mögliche versucht... und aus den Fehlermeldungen des Compilers werde ich auch nicht so wirklich schlau. Aber hier erstmal der Code.

window.onload = init;

function init (){

charakter1 = document.getElementById("char1");
charakter2 = document.getElementById("char2");
charakter3 = document.getElementById("char3");
charakter4 = document.getElementById("char4");

charakter1.onclick = function () {chooseCharakter(charakter2, charakter3, charakter4, charakter1);}
charakter2.onclick = function () {chooseCharakter(charakter1, charakter3, charakter4, charakter2); undLos()}
charakter3.onclick = function () {chooseCharakter(charakter2, charakter1, charakter4, charakter3);}
charakter4.onclick = function () {chooseCharakter(charakter2, charakter3, charakter1, charakter4);}
}

function chooseCharakter(x, y ,z, a){
document.getElementsByTagName("section")[0].removeChild(x);
document.getElementsByTagName("section")[0].removeChild(y);
document.getElementsByTagName("section")[0].removeChild(z);
a.className = 'chosen';
}


Wenn nur der Code hier im js steht wird noch alles korrekt ausgeführt. Sobald ich aber das folgende hinzufüge geht gar nichts mehr.

function undLos (){
a = document.getElementById("a0");
b = document.getElementById("b0");
c = document.getElementById("c0");
d = document.getElementById("d0");
e = document.getElementById("e0");
f = document.getElementById("f0");
g = document.getElementById("g0");
h = document.getElementById("h0");
i = document.getElementById("i0");
j = document.getElementById("j0");
k = document.getElementById("k0");
l = document.getElementById("l0");

a.onclick = function () {placeCoin(a);}
b.onclick = function () {placeCoin(b);}
c.onclick = function () {placeCoin(c);}
d.onclick = function () {placeCoin(d);}
e.onclick = function () {placeCoin(e);}
f.onclick = function () {placeCoin(f);}
g.onclick = function () {placeCoin(g);}
h.onclick = function () {placeCoin(h);}
i.onclick = function () {placeCoin(i);}
j.onclick = function () {placeCoin(j);}
k.onclick = function () {placeCoin(k);}
l.onclick = function () {placeCoin(l);}


player = true; // player = boolean(1); --> so besser?
coinIsSet = false;
spielfeld = new Array (12);

function createSpielfeld(x){
var trIdExists = false;
for(String trId:spielfeld){
if (trId == x){// kein equals in js?
trIdExists = true;
}
}
if (!trIdExists){
var string(x) = new Array (12); // ich möchte das angelegte array so nennen wie die zeile (trId)... so möglich?
}
}

function placeCoin (x){
changingPlayers();
createSpielfeld(x);
for (var i=1, coinIsSet, i++){
if (x == null){
var coin = document.createElement('img');
var coinSrc = document.createAttribute('src');
if (player){
coinSrc.value = '../images/player1.png';
reihe1.push('../images/player1.png');
}else{
coinSrc.value = '../images/player2.png';
reihe1.push('../images/player2.png');
}
coin.setAttributeNode(picSrc);
var td = document.getElementById( string(x) + i);
td.appendChild(coin);
coinInPlace = true;
}
}
}

function changingPlayers (){
if (player){
player = false;
}else{
player = true;
}
coinIsSet = false;
}
}

Beim ersten Teil wählt man einfach zwischen 4 Bildern aus und das gewählte wird vergrößert wärend die anderen verschwinden.
Der ganze 2. Teil des Codes soll praktisch ein Viergewinnt Spiel sein bzw werden.
In der html habe ich eine Tabelle.... man spielt gegen einander also klickt abwechselnd mit der Maus.
Immer wenn man an den Anfang einer Tabellenzeile klickt wird von dieser Zeile ein Array angelegt und am Ende ein Bild mit der jeweiligen Farbe des Spielers eingefügt. Sollte von der Zeile schon ein Array vorhanden sein wird überprüft wie viele Bilder schon in der Zeile (dem Array) vorhanden sind und das nächste Bild wird "oben" draufgelegt.
Ich hoffe es ist nicht zu unübersichtlich und soweit verständlich.
Vielleicht kann mir ja der eine oder andere ein paar Tipps geben oder sagen wieso nichts mehr ausgeführt wird ab dem Moment wo der Teil 2 eingefügt wird.
Vielen Dank!
th30r3tisch
 
Werbung:
Könntest du einen Link zu deiner Seite angeben? Ich bin ehrlich gesagt gerade zu faul, den ganzen Quellcode zulesen. So wäre es deutlich einfacher für andere den Fehler ausfindig zu machen.

Ein hilfreiches Add-On für Firefox wäre z.B. Firebug, damit machst du so einen Fehler schnell ausfindig.
 
Ganz genau habe ich es auch nicht gelesen, aber folgendes ist mir aufgefallen:
Code:
player = true; // player = boolean(1); --> so besser?
Eindeutig besser ist player = true.

Code:
for(String trId:spielfeld){
Das ist wohl Java. Je nach Kontext musst Du dich über forEach oder for(x in y) informieren.

Code:
var string(x) = new Array (12); // ich möchte das angelegte array so nennen wie die zeile (trId)... so möglich?
Ob es geht, da bin ich mir nicht sicher (vielleicht mit eval), aber zu empfehlen ist es sicher nicht, Variablennamen als Variable anzulegen.

Code:
if (trId == x){// kein equals in js?
Nein.


Wenn es ein Vier-Gewinnt-Spiel werden soll, würde ich empfehlen, es als zweidimensionales Array abzubilden, so wie das echte Spiel.

Und benutze besser Code-Tags, sonst wird, wie man sieht, ein
Code:
[i]
als BB-Code für Italic interpretiert und verschluckt, wodurch der Code verfälscht wird.
So: [ code ]dein code[ /code ] ohne die Leerzeichen.

 
Werbung:
Vielen Dank für die schnellen Antworten! =D
@nookie ... die Webseite ist noch nicht hochgeladen deswegen kann ich leider keinen Link schicken.
Ein Addon habe ich schon ich glaube irgendwie web developer kit oder so heißt das. Aber werde mir das mit Firebug mal anschauen, vielleicht hilft mir das ja weiter.

@Sempervivum ... danke für die ausführlichen Antworten, hat mir viele fragen gelöst!
Werde das alles mal ändern und hoffen das es dann klappt.
Das mit dem zweidimensionales Array ist ein guter Tipp das hört sich leichter an.
Und die Code Tags habe ich auch gesucht... aber nicht gefunden... deswegen habe ich das so gemacht, aber das nächste mal mache ichs mit Code dann =D
 
Zurück
Oben