Datenschutzerklärung

Zellenhintergrundfarbe dyn. ändern? Was mache ich falsch?

Validome - Forum

Startseite Validome
RSS 2.0  
Sie sind nicht angemeldet. Atom 1.0  
Forum Home / Javascript-Forum /

Zellenhintergrundfarbe dyn. ändern? Was mache ich falsch?

  Beitrag schreiben
Autor
Beitrag Seiten: 1
-LT-
Gast



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
  Zitieren
-LT-
Gast



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
  Zitieren
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
  Zitieren
-LT-
Gast




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
  Zitieren
-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
  Zitieren
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
  Zitieren
-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
  Zitieren
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
  Zitieren
-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
  Zitieren
Seiten: 1   Beitrag schreiben
Wechsel zu

Die letzten Beiträge aus diesen Forum

Valid HTML 4.01