Stefan: Hilfe! Script funktioniert nicht.

Hi :)
Ich hab mir hier ein Script zusammen gebaut:

  
<style> td.c1 { border-bottom: 1px dotted #000000; }</style>  
<body onload="ressource('Ziegelsteine', '1'); ressource('Kohle', '2'); ressource('Bretter', '3'); ressource('Eisen', '4'); ressource('Leder', '5'); ressource('Masten', '6'); ressource('Tuch', '7'); ressource('Schiff', '8'); " bgcolor="#EEEEEE" style="font-face: Verdana;">  
[code lang=javascript]<script type="text/javascript">  
function ressource(ressource, key)  
{  
var input = document.getElementById('input_' + key).value;  
if(ressource = "Ziegelsteine")  
{ html = "<font size='1'><b>Energie:</b> " + (5*input) + "<br><b>Lehm:</b> " + (2*input) + "<br><b>Wasser:</b> " + (2*input) + "<br></font>"; }  
  
else if(ressource = "Kohle")  
{ html = "<font size='1'><b>Energie:</b> " + (2*input) + "<br><b>Holz:</b> " + (2*input) + "<br><b>Wasser:</b> " + (1*input) + "<br></font>"; }  
  
else if(ressource = "Bretter")  
{ html = "<font size='1'><b>Energie:</b> " + (5*input) + "<br><b>Holz:</b> " + (3*input) + "<br></font>"; }  
  
else if(ressource = "Eisen")  
{ html = "<font size='1'><b>Energie:</b> " + (4*input) + "<br><b>Eisenerz:</b> " + (5*input) + "<br><b>Kohle:</b> " + (2*input) + "<br></font>"; }  
  
else if(ressource = "Leder")  
{ html = "<font size='1'><b>Energie:</b> " + (20*input) + "<br><b>Fell:</b> " + (1*input) + "<br></font>"; }  
  
else if(ressource = "Masten")  
{ html = "<font size='1'><b>Energie:</b> " + (50*input) + "<br><b>Bretter:</b> " + (20*input) + "<br><b>Gold:</b> " + (300*input) + "<br></font>"; }  
  
else if(ressource = "Tuch")  
{ html = "<font size='1'><b>Energie:</b> " + (4*input) + "<br><b>Wolle:</b> " + (2*input) + "<br><b>Wasser:</b> " + (1*input) + "<br></font>"; }  
  
else if(ressource = "Schiff")  
{ html = "<font size='1'><b>Bretter:</b> " + (300*input) + "<br><b>Masten:</b> " + (4*input) + "<br><b>Tuch:</b> " + (20*input) + "<br><b>Gold:</b> " + (400*input) + "<br></font>"; }  
else { html = "<font size='1'>loading failed...</font>"; }  
document.getElementById("span" + key).innerHTML = html;  
}  
</script>  

<table border="0" width="500">
<tr><td colspan="3"><font size="2"><b><u>&quot;Ressourcen Verarbeitungs&quot; - Tool<br><br></b></u></font></td></tr>
<tr>
<td class="c1" width="15"><font size="1"><b><u>Anzahl:</b></u></font></td>
<td class="c1" width="150"><font size="1"><b><u>Ressource:</u></b></font></td>

<td class="c1"><font size="1"><b><u>Info:</u></b></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_1" onkeydown='ressource("Ziegelsteine", "1");' onkeyup='ressource("Ziegelsteine", "1");'  onchange='ressource("Ziegelsteine", "1");' onfocus='ressource("Ziegelsteine", "1");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Ziegelsteine</font></td>
<td class="c1"><font size="2"><span id="span1"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_2" onkeydown='ressource("Kohle", "2");' onkeyup='ressource("Kohle", "2");'  onchange='ressource("Kohle", "2");' onfocus='ressource("Kohle", "2");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Kohle</font></td>
<td class="c1"><font size="2"><span id="span2"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_3" onkeydown='ressource("Bretter", "3");' onkeyup='ressource("Bretter", "3");'  onchange='ressource("Bretter", "3");' onfocus='ressource("Bretter", "3");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Bretter</font></td>

<td class="c1"><font size="2"><span id="span3"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_4" onkeydown='ressource("Eisen", "4");' onkeyup='ressource("Eisen", "4");'  onchange='ressource("Eisen", "4");' onfocus='ressource("Eisen", "4");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Eisen</font></td>
<td class="c1"><font size="2"><span id="span4"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_5" onkeydown='ressource("Leder", "5");' onkeyup='ressource("Leder", "5");'  onchange='ressource("Leder", "5");' onfocus='ressource("Leder", "5");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Leder</font></td>
<td class="c1"><font size="2"><span id="span5"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_6" onkeydown='ressource("Masten", "6");' onkeyup='ressource("Masten", "6");'  onchange='ressource("Masten", "6");' onfocus='ressource("Masten", "6");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Masten</font></td>

<td class="c1"><font size="2"><span id="span6"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_7" onkeydown='ressource("Tuch", "7");' onkeyup='ressource("Tuch", "7");'  onchange='ressource("Tuch", "7");' onfocus='ressource("Tuch", "7");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Tuch</font></td>
<td class="c1"><font size="2"><span id="span7"><font size="1">loading ...</font></span></font></td>
</tr><tr>
<td class="c1" width="15"><input id="input_8" onkeydown='ressource("Schiff", "8");' onkeyup='ressource("Schiff", "8");'  onchange='ressource("Schiff", "8");' onfocus='ressource("Schiff", "8");' type="text" size="5" value="1" title="Anzahl"></td>
<td class="c1" width="150"><font size="2">Schiff</font></td>
<td class="c1"><font size="2"><span id="span8"><font size="1">loading ...</font></span></font></td>
</tr></table></body>[/code]

Nur Leider funktioniert das Ganze nicht.
Beim body onload lädt das Script immer nur die Daten für die Ziegelsteine, also den 1.Eintrag. Und das in jeder Box!
Wer kann mir helfen?

  1. Ich danke vielmals :P
    Hab meinen Fehler gefunden *g*

    1. Hallo Stefan,

      Ich danke vielmals :P
      Hab meinen Fehler gefunden *g*

      sitzt du hinter mir? Bist du Mitarbeiter bei Schäuble? Wo kann ich mich verstecken?

      Gruß, Jürgen

      1. Hi!

        » Ich danke vielmals :P
        » Hab meinen Fehler gefunden *g*

        sitzt du hinter mir? Bist du Mitarbeiter bei Schäuble? Wo kann ich mich verstecken?

        Am besten mit einer Videokamera unter seinem Hintern - falls der Minister  jemals ohne fremde Hilfe aufsteht, kannst Du Dir - zumindest in diesem Land - für alle Zeiten, Alles leisten.

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Hallo Stefan,

    if(ressource = "Ziegelsteine")
    ...

    "=" ist der Zuweisungsoperator, d.h. du weist der variablen den String "..." zu. Da der Wert der Zuweisung ungleich Null ist, wird dieser if-Zweig ausgeführt. Du suchst aber den Vergleichsoperator "==". Bei so vielen else if benutze ich übrigens gerne switch / case.

    Gruß, Jürgen

  3. Hallo Stefan,

    Du hast Deinen Fehler gefunden, schön.

    [code lang=javascript]<script type="text/javascript">
    if(ressource = "Ziegelsteine")
    else if(ressource = "Kohle")
    else if(ressource = "Bretter")
    else if(ressource = "Eisen")
    else if(ressource = "Leder")
    else if(ressource = "Masten")
    else if(ressource = "Tuch")
    else if(ressource = "Schiff")

    Für andere:
    Zuweisungsoperator:                  =
    Vergleichsoperator (auf Gleichheit): ==

    Mir scheint der Einsatz von den Javascript-Objekten (die man in anderen Sprachen assoziative Arrays nennt) sinnvoller als ellenlange if/else if/else-Konstrukte.

    Weiterhin wäre es eine gute Idee, das font-Element zu entsorgen, es gibt doch CSS!

    Freundliche Grüße

    Vinzenz

    1. @@Vinzenz Mai:

      Mir scheint der Einsatz von den Javascript-Objekten (die man in anderen Sprachen assoziative Arrays nennt) sinnvoller als ellenlange if/else if/else-Konstrukte.

      Oder zumindest

      [ref:self812;javascript/sprache/bedingt.htm#switch@title=switch] (ressource)  
      {  
        case "Ziegelsteine":case "Kohle":        …  
        …  
      }
      

      Live long and prosper,
      Gunnar

      --
      Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)