Einer Variable eine _neues_ Element zuweisen

Wenn ich das so schreibe, setzt er lediglich oben in die linke Ecke des Feldes einen Block.
Code:
		for (i=0; i <= 249; i++) {
			document.writeln("<div id='block" + i + "'><img src='block.jpg'></div>");
			block[spalte][zeile] = i;
			document.getElementById("block" + block[spalte][zeile]).style.position = "absolute";
			document.getElementById("block" + block[spalte][zeile]).style.top = blockY + "px";
			document.getElementById("block" + block[spalte][zeile]).style.left = blockX + "px";
			document.getElementById("block" + block[spalte][zeile]).style.visibility = "visible";
			document.getElementById("block" + block[spalte][zeile]).style.backgroundColor  = "#FF0000";
			if (spalte > 8) {
				spalte = 0;
				zeile = zeile + 1;
				block[zeile] = new Array();
				blockX = 100;
				blockY = blockY + 20;
			} else {
				spalte = spalte + 1;
				blockX = blockX + 70;
			}
		}

das gleiche passiert auch wenn ich ich block[spalte][zeile] durch i ersetze

Ist da noch nen Fehler und ist es Absicht, dass du einmal zu Beginn
Code:
block[zeile] = new Array();
stehen hast und einmal in der IF-Funktion?
 
Zuletzt bearbeitet:
Hi,

ja das ist Absicht.
Schreibt er wirklich nur einen Block oder 250 Blöcke an der gleichen Stelle übereinander?

Hast du auch alle verwendeten Variablen vor der for-Schleife richtig deklariert?


Gruß

.:lay-z-cow:.
 
Das ist schwer zu sagen, ob er alle übereinander schreibt, wie soll ich das heraus finden? ^^
Eine kurze Frage zur Deklaration: Im ganzen Programm hab ich anstatt block[zeile][spalte] block[spalte][zeile] geschrieben.

deine Deklaration schaut ja nun so aus:
Code:
	block = new Array();
	spalte= 0;
	zeile = 0;
	block[zeile] = new Array();
	blockY = 100;
	blockX = 100;

das dann einfach durch:
Code:
	block = new Array();
	spalte= 0;
	zeile = 0;
	block[spalte] = new Array();
	blockY = 100;
	blockX = 100;

ersetzen und in der Fkt auch einfach anstatt block[zeile] = new Array(); block[spalte] = new Array(); schreiben oder muss ich da noch was ändern?
 
Hi,

indem du einen Blick in den Quelltext wirfst ;) - z.B. mit Firebug. Oder einfach das Position absolute rausnimmst.

Ich persönlich fand erst Zeile, dann Spalte irgendwie sinnvoller das Feld Zeile für Zeile statt Spalte für Spalte zu füllen, aber wenn du es durchgehend abänderst, sollte es auch anders klappen.

EDIT:
Wenn du block[zeile][spalte] ändern willst, musst du allerdings auch die if-Bedingung komplett umschreiben.
 
Zuletzt bearbeitet:
Also wenn ich die Befehle position=absolut, sowie style.left und .top rausnehme, dann setzt er (was er auch schon voher gemacht hat) eins ganz oben links in die Ecke.
[Also voher hat er eins oben links in die Ecke des Bereichs wo alle Blöcke sein sollen gesetzt bei top=100 und left=100 und eins oben in die linke Ecke der komplette Seite.]
Und zusätzlich setzt er nun noch eins direkt unter das, welches in der linken oberen Seiteecke ist.

Zu der if-Anweisung:
Warum muss ich die denn ändern, schließlich hat er voher es ja genauso hingeschrieben wie ich wollte :) also bevor ich überhaupt hier etwas reingeschrieben hab zu dem Thema:confused:

EDIT: Und wie sehe diese dann aus? Ich kann mir das nicht genau ausmalen ^^
Danke, dass du mit mir hier die ganze Zeit Lust hast zu diskuttieren und hoffe du gibst nicht auf :)
==>Wäre bestimmt auch nett, wenn sich weitere Stimmen in die Duskussion einbringen würden!
 
Zuletzt bearbeitet:
! Ich hab mir die Mühe gemacht, es umzustellen auf Zeile/Spalte und nun klappt es soweit, aber hab eigentlich noch gar nicht das Prob gelöst, nämlich dass sich der weiße Block in einen anderen verwandelt!! :eek:
 

Anhänge

  • BreakOut.zip
    19,5 KB · Aufrufe: 12
Zuletzt bearbeitet:
Doch hast du... ;)

Wenn du NACH der for-Schleife sowas in der Art schreibst...

HTML:
document.getElementById("block" + block[0][0]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[1][1]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[2][2]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[3][3]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[4][4]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[5][5]).firstChild.src = "block_immun.jpg";
document.getElementById("block" + block[6][6]).firstChild.src = "block_immun.jpg";

Hab ich grad auch in dem letzten Code von dir ausprobiert.
Der Code danach ist aber ziemlich buggy, weil du immer noch versuchst dem Array irgendwelche Properties zu zuzuweisen.
statt
HTML:
block[zeile][spalte].style.visibility = "hidden";
mach
HTML:
document.getElementById("block" + block[zeile][spalte]).style.visibility = "hidden";



Gruß

.:lay-z-cow:.
 
Zuletzt bearbeitet:
jo, das hatte ich schon danach geändert, und das mit den bildern klappt bei mir auch gutgut. danköö.

Jetzt muss ich mal schauen, wieso der Ball, sobald er einen Block in der untersten Reihe zerstört hat, weiterhin von der untersteh Reihe abprallt und nicht hindurch fliegt, ist warhscheinlich bei der umstellung was falsch gelaufen.
EDIT:eek:kay, den Fehler hab ich entdeckt und behoben!
Naja, hier nomma zur Bestätigung deiner tollen Leistung der aktuelle Code ;)

Noch ne Optimierungssache. Um einer ganzen Zeile dieses neue Bild zu verpassen habe ich:
Code:
for (i=0; i<=9; i++) {
document.getElementById("block" + block[7][i]).firstChild.src = "block_immun.jpg";
}
geschrieben.

Geht das auch in einer Zeile oder einfacher? Also bspw. einfach (was aber nicht läuft):
Code:
document.getElementById("block" + block[7][]).firstChild.src = "block_immun.jpg";
 

Anhänge

  • BreakOut.zip
    19,5 KB · Aufrufe: 11
Zuletzt bearbeitet:
Kann denn das Programm nun überhaupt über:
if (document.getElementById("block" + block[zeile][spalte]).firstChild.src == "block_immun.jpg")
heraus finden, ob es diese Bild hat? Hat grade iwie nicht wirklich geklappt.
EDIT: Okay, das hab ich auch geschafft. Man kann dort nicht einfach nur den Namen eingeben, sondern man muss den kompletten Pfad angeben!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück