ppp1pp1p1: finde den Fehler nicht

Hi, ich habe mir ein Script ausgedacht, das eine beliebig große rahmenlose Tabelle erstellt, wo dann jede ca. 1px große Zelle durch bestimmte Hintergrundfarben ein Bild ergeben soll.
Zudem soll jede Zelle eine onclick-Funktion haben (z.B. ein PopUp mit dem Farbcode öffnen)

Ich hab dafür folgenden Code genutzt, welcher aber nichts bewirkte:

[code lang=javascript]<script type="text/javascript>  
var x = 1  
var y = 1  
var color = 000000  
function laden (x, y) {  
  var zeile = 1  
  var spalte = 1  
  var tabelle = "<table border= 0 with="20">"  
  while (zeile <= y) {  
    tabelle += "<tr> "  
    while (spalte <= x) {  
      tabele += "<td name="x"+spalte"y"+zeile" onclick="malen("+spalte+", "+zeile+")" with="1"></td>"  
      spalte+= 1  
    }  
    tabelle += "</tr>"  
    spalte = 1  
    zeile += 1  
  }  
  zeile = 1  
  tabelle += "</table>"  
  window.document.area.write(tabelle)  
}  
function farbcode (x, y) {  
  <-- kommt noch ->  
}  
</script>
~~~x:&nbsp; <select name="groesze\_x" onChange="x=this.form">  
<option>20</option>  
<option>50</option>  
<option>100</option>  
<option>20Opera</option>  
</select> px;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y:&nbsp; <select name="groesze\_y" onChange="y=this.form">  
<option>20</option>  
<option>50</option>  
<option>100</option>  
<option>20O</option>  
</select>px &nbsp;&nbsp;&nbsp;  
<input type="button" value="Malfl&auml;che erstellen" onclick="laden(x, y)" /> <br />  
<br />  
<br />  
<br />  
<br />  
<form name="area">  
</form>[/code]
  1. Danke schonmal im vorraus ^^

  2. Da sind gleich mehrere gravierende Fehler drin:

    • überall fehlen die ';' am Ende der Zeilen.
    • innerhalb der Strings sind die '"' nicht mit '' escaped.
    • einige Browser benötigen tbody innerhalb einer table.

    Ich würde empfehlen, dass Du die Einleitung in JavaScript noch mal durchliest.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hi,

    Ich hab dafür folgenden Code genutzt, welcher aber nichts bewirkte:

    doch, er bewirkt etwas, nämlich Fehler. Warum verschweigst Du uns diese?

    <script type="text/javascript>

    Warum hast Du Deine Codes nicht validiert?

    var color = 000000

    Die Zahl 0 ändert sich nicht, wenn man das Oktalsystem verwendet.

    var tabelle = "<table border= 0 with="20">"

    [...]

    tabele += "<td name="x"+spalte"y"+zeile" onclick="malen("+spalte+", "+zeile+")" with="1"></td>"

    Ich kann mir nicht helfen, aber Deine Variablen klingen plötzlich jüdisch.

    window.document.area.write(tabelle)

    Was genau vermutest Du hier irrtümlicherweise zu machen?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  4. Ich hab dafür folgenden Code genutzt, welcher aber nichts bewirkte:

    Höchstwahrscheinlich hat er eine Fehlermeldung in der JavaScript-Konsole bewirkt.

    tabele += "<td name="x"+spalte"y"+zeile" onclick="malen("+spalte+", "+zeile+")" with="1"></td>"

    Diese Zeile ist Murks. Wenn du einen JavaScript-String mit " begrenzt, kannst du nicht darin HTML-Attributwerte ebenfalls mit doppelten Anführungszeichen begrenzen, weil sie den String schließen. Du kannst Attributwerte aber auch mit einfachen Anführungszeichen begrenzen. Beispiel:

    var string = "JavaScript-String mit einem <em title='Attribut!'>HTML-Element</em> mit Attribut.";

    Wenn du eine Variable in einen String montieren willst, musst du zudem auf beiden Seiten den Plus-Operator verwenden:

    var string1 = "mitte";
    string2 = "vorne " + string1 + " hinten";
    alert(string2);

    Achte mal auf diese beiden Sachen und schreibe die obige Zeile neu.

    window.document.area.write(tabelle)

    Ich weiß nicht, wo du das her hast, aber Formular-Elemente haben keine Methode "write". Wenn du den HTML-Inhalt eines Elements ändern willst, verwende document.http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=getElementById("IDdesElements").http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML = "HTML-Code".

    X:&nbsp; <select name="groesze_x" onChange="x=this.form">

    Welchen Sinn hat es, in der globalen Variable x eine Referenz auf das Formularelement zu speichern? Willst du nicht vielleicht eher den Wert des Formularfeldes speichern?
    Bei einem select-Feld kannst du darauf zugreifen, indem du im options-Array das Element ansprichst, dessen Index selectedIndex ist: this.options[this.selectedIndex].value

    Mathias

    1. Danke an alle, ich bin halt ein totaler Noob in Javascript (sonst scipte ich mit Ruby) ^^

      Ich werde meinen Script dann mal korrigieren

      @molily
      Ich habe X:&nbsp; <select name="groesze_x" onChange="x=this.form">  so geschrieben, da ich mir nicht sicher war ob er überhaupt die Variable übernimmt (wobei sich die Vermutung auf meine Fehler im Javascriptcode zurückführen lässt)