|
|
Hallo!
Kann mir jemand sagen, was ich hier falsch mache? Es kommt immer der Fehler: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht", was es aber laut Dokumentation sollte.
Code:
<?
$mapwidth = 10;
$mapheight = 10;
?>
<script type="text/javascript">
<!--
function checkSpace(room) {
var y = Math.floor(room/<?=$mapwidth ?>);
var x = room % <?=$mapheight ?>;
if ((x + <?=$dim1 ?> -1) <= <?=$mapwidth-1 ?> && (y + <?=$dim2 ?> -1) <= <?=$mapheight-1 ?>) {
alert("Passt rein");
window.document.getElementByID(room).bgColor = "green";
}
else {
alert("Passt nicht");
}
}
//-->
</script> |
Und noch der Teil mit der Tabellenzelle:
Code:
<td id="15" style="cursor:pointer" bgcolor="blue">
<div onClick=checkSpace("15");>
<img src="blank.gif">
</div>
</td> |
Ich stehe voll auf dem Schlauch, ich habe auch schon .style.backgroundColor versucht, aber ohne Erfolg.
Ich bin für jede Hilfe dankbar!
|
|
| 05.08.2005 15:20:03 |
|
|
|
Ich sollte noch erwähnen, wo der Fehler liegt... ;) Die Tabellenzelle wird nicht grün, wie gewünscht, es kommt eine Fehlermeldung. Die alerts funktionieren jedoch, also liegt in der Berechnung selbst kein Fehler.
|
|
| 05.08.2005 15:33:49 |
|
dkdenz
Administrator
Ort: Lübeck
Registriert: 25.04.2005
Beiträge: 605
|
|
Hallo, ich spreche leider nicht gut JS, aber was mir auffällt ist folgendes: bgColor im Script und bgcolor im Dokument. Zudem beinhaltet die id nur Zahlen, obwohl doch meines Wissens eine id nicht nur aus Zahlen bestehen darf und auch nicht mit einer Zahl beginnen darf.
Viel Spaß noch...
_______________________________________ Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.14eol) Gecko/20080418 Ubuntu/dapper-security Firefox/1.5.0.12eol
|
|
| 05.08.2005 23:15:34 |
| http://dkmd.de | http://dkdenz.de |
Zitieren |
|
Validome
Administrator
Registriert: 04.04.2005
Beiträge: 313
|
|
Hallo, kleine Berichtigung: ID, IDREF oder Name Der Wert eines solchen Attributs muss mit einem Buchstaben A-Z oder a-z beginnen, und darf in der weiteren Zeichenkette ebenfalls nur Buchstaben A-Z und a-z, Ziffern 0-9, Bindestriche (-), Unterstriche (_), Doppelpunkte (:) und Punkte (.) enthalten. Nicht erlaubt sind Sonderzeichen, Leerzeichen oder andere Interpunktionszeichen. Quelle: http://www.validome.org/doc/HTML_ge/htm ... idref_name
|
|
| 06.08.2005 14:35:51 |
|
|
|
dkdenz schrieb:
aber was mir auffällt ist folgendes: bgColor im Script und bgcolor im Dokument.
|
bgColor im Dokument zu setzen war ein Versuch, weil ich vermutete, dass bgColor evtl nicht NULL sein darf beim Zugriff darauf. Also habe ich es mit "blue" soz. initialisiert. Ich weiß nicht genau, inwiefern dies überhaupt relevant ist für JS, aber ich komme aus einer anderen Programmierecke, und da können NULL-Werte Probleme bedeuten.
Dass die ID Beschränkungen unterliegt, war mir in der Tat entgangen. Das erfordert ein Stück Mehrarbeit, da ich ja die IDs als Grundlage für mathematische Operationen benutze. Eine Lösung für mein Problem ist dies allerdings leider nicht. Auch im korrekten Format bekomme ich die gleiche Fehlermeldung.
Wer noch eine Idee hat...
Auf jeden Fall Dank an dkdenz und Validome.
|
|
| 06.08.2005 15:30:32 |
|
-LT-
Mitglied
Registriert: 06.08.2005
Beiträge: 3
|
|
@dkdenz: Mir ist jetzt erst der Fettdruck richtig aufgefallen. An der Groß- und Kleinschreibung hat es auch nicht gelegen. Leider. ;)
|
|
| 06.08.2005 16:35:08 |
|
Validome
Administrator
Registriert: 04.04.2005
Beiträge: 313
|
|
Hallo, welche Fehlermeldung bekommst du denn? Wenn Du mir den Wert von dim1 und dim2 verrätst werde ich mal den Code zum laufen bringen ;-))
mfg Thomas Mell
|
|
| 07.08.2005 02:08:52 |
|
-LT-
Mitglied
Registriert: 06.08.2005
Beiträge: 3
|
|
Der Fehler lautet: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht" + Zeilennummer des Fehlers. Die betreffende Zeile ist diejenige mit document.getElementByID(room).bgColor = "#00FF00";
Die neueste Version sieht nun so aus:
Code:
<script type="text/javascript">
<!--
function checkSpace(room) {
var y = Math.round(room.charAt(1));
var x = Math.round(room.charAt(2));
if ((x + <?=$dim1 ?> -1) <= <?=$mapwidth-1 ?> && (y + <?=$dim2 ?> -1) <= <?=$mapheight-1 ?>) {
document.getElementByID(room).bgColor = "#00FF00";
document.getElementById(room).firstChild.href = "index.php?add="+y+x; // neueste Ergänzung, die auch nicht geht
}
else {
document.getElementByID(room).bgColor = "#FF0000";
}
}
//-->
</script> |
wobei: $dim1,$dim2 = {1..10} und $mapwidth,$mapheight = {5..10}
Und noch eine von hundert Beispielzellen:
Code:
<td height='60' width='60'>
<div id='a03' onMouseOver=checkSpace('a03');>
<a href='index.php?add=03'>
<img src='blank.gif' border='0'>
</a>
</div>
</td> |
Mir ist es vom Prinzip egal, ob nun der Zellen- oder div-Hintergrund die Farbe wechselt, oder man verändert "blank.gif" zu "<newColor>.gif", Hauptsache irgendetwas in diesem Bereich ändert die Farbe.
Wahrscheinlich liegt es an etwas ganz Abwegigem, auf das keiner kommt... Ich habe schon mal die Browser-Sicherheitseinstellungen überprüft, aber die müssten so stimmen. Ich benutze momentan zum Testen den FireFox und den IE 6, beide mit den neuesten Updates.
Beitrag geändert von -LT- (07.08.2005 16:57:12)
|
|
| 07.08.2005 13:43:23 |
|
Validome
Administrator
Registriert: 04.04.2005
Beiträge: 313
|
|
Hallo, zwei entscheidende Fehler sind vorhanden: 1. checkSpace('a03'); im onmouseover-Event muss in doppelte Anführungsstriche gesetzt werden. (das sollte man bei jeden Attributwert machen) 2. getElementByID ist falsch geschrieben. getElementById ist richtig (das d am Ende muss klein geschrieben werden).
Das sollte es auch schon gewesen sein. mfg Thomas Mell
|
|
| 07.08.2005 21:41:01 |
|
-LT-
Mitglied
Registriert: 06.08.2005
Beiträge: 3
|
|
Der 2. Fehler war der Grund für mein Problem. Darauf wäre ich nie gekommen. Doppelte und einfache Anführungszeichen scheinen jedoch äquivalent zu sein, die Werteübergabe funktioniert auch mit 'abc'.
Meine Schwierigkeiten wären damit beseitigt. Nochmals vielen Dank!
mfg, -LT-
Beitrag geändert von -LT- (08.08.2005 15:33:58)
|
|
| 08.08.2005 15:33:18 |
|
Wechsel zu
Die letzten Beiträge aus diesen Forum
|
|