tomkn: Problem mit globaler JS Variablen

Hi, ich habe folgendes Prob:

ich habe eine
variable:

var mybild= "<img src='def.jpg'>" ;

dann eine Funktion mit einer if/else Abfrage.
Je nach Ergebniss der Abfrage soll "mybild" mit einem anderen Bild gefüllt werden.
mybild = "<img src='fat-cat.jpg' alt='fat'>";

das Ergebniss wird weiter unten im Body ausgegeben:

<script type="text/javascript">

document.write(mybild);

</script>

Mein Problem ist:

Er ignoriert meine Änderungsversuche in der Funktion. Woran liegt das? Er gibt unten immer nur das Default-Bild aus.

Danke!

  1. Hi,

    Hi, ich habe folgendes Prob:

    dies lässt sich mit einem Lemma lösen. Du musst nur noch Deine Ma loswerden, dann passt das schon.

    var mybild= "<img src='def.jpg'>" ;
    dann eine Funktion mit einer if/else Abfrage.
    Je nach Ergebniss der Abfrage soll "mybild" mit einem anderen Bild gefüllt werden.
    mybild = "<img src='fat-cat.jpg' alt='fat'>";

    [...]

    Uns allen wäre bedeutend besser geholfen, wenn Du uns den Code nicht häppchenweise servieren würdest, sondern in zwar gekürzter, aber zusammenhängender Weise. Das hätte nämlich den Vorteil, dass wir nicht raten müssten, was Du machst. Übrigens gibt es in der deutschen Sprache kein Wort namens "Ergebniss".

    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
    1. Wie freundlich...

      Prüfst du all deine Beiträge vor dem Veröffentlichen?
      Also lass bitte deinen Ärger nicht an anderen aus wenn du einen miesen Tag/Monat/Leben hast. Das macht es nicht besser.

      Mein JS-Problem:

      Ich kann nicht innerhalb einer JS-Funktion eine globale Variable verändern. Die unten genannte Änderung wird ignoriert und es wird nur der Default-Wert ausgegeben

      mfg

      1. Hallo tomkn,

        Mein JS-Problem:

        ...hast Du wieder nicht in Form von gekürzten, zusammenhängenden Code gepostet, wie es Cheatah empfahl. Folglich ist Dir nun wieder nicht zu helfen.

        Mit freundlichem Gruß
        Micha

        --
        LeagueEditor JavaScript kostenlose Ligaverwaltung || richtig Messen will gelernt sein
        1. Hallo,

          Mein JS-Problem:

          meine Glaskugel war etwas trüb, vielleicht habe ich aber im Blätterrauschen
          draussen etwas wie "eher return statt eval" gehört. Vielleicht wars aber
          auch ganz anders?

          Grüsse
          Cyx23

          1. hier der code:

            <html xmlns="http://www.w3.org/1999/xhtml">
            <script language="JAVASCRIPT">

            var mybild = "<img src='muskel.jpg' alt='fit'>";

            function computeform(form) {

            if (checkform(form)) {

            groesse_2 = form.groesse.value/100;
                groesse_3 = groesse_2 * groesse_2;

            yourbmi= form.gewicht.value / groesse_3;

            form.bmi.value=yourbmi;

            youralter=form.alter.value;

            form.ihr_alter.value=youralter;

            if (youralter <=18) {

            form.ihr_alter.value="In dieser Altersstufe sind Sie noch nicht ausgewachsen. Eine BMI-Angabe ist daher nicht sinnvoll!";

            }

            else if (youralter >=19 && youralter <=24) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 19-24 ";

            }

            else if (youralter >=25 && youralter <=34) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 20-25 ";

            }
                   else if (youralter >=35 && youralter <=44) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 21-26 ";

            }

            else if (youralter >=45 && youralter <=54) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 22-27 ";

            }

            else if (youralter >=55 && youralter <=65) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 23-28 ";

            }

            else if (youralter >=66) {

            form.ihr_alter.value="In Ihrem Alter beträgt der akzeptable BMI 24-29 ";

            }

            // Fallabkl&auml;rung f&uuml;r die verschiedenen BMIs

            if (yourbmi >40) {

            form.my_comment.value="RUFT EINEN ARZT mann ist der FETT";

            }

            else if (yourbmi >=30 && yourbmi <=40) {

            form.my_comment.value="Hier hilf wohl auch kein Sport mehr! Suchen sie dringend einen Arzt auf!";

            }

            else if (yourbmi >=26 && yourbmi <=29 ) {

            form.my_comment.value="Ihr BMI ist relativ hoch, treiben Sie doch mal wieder Sport mit Freunden und falls von denen gerade keiner Zeit hat, besuchen Sie sport4Friends.net";

            }

            else if (yourbmi >=25 && yourbmi <26 ) {

            form.my_comment.value="Ihr BMI ist in Ordnung sie sollten aber auf jedenfall Sport treiben um diesen noch zu verbessern! ";

            }

            else if (yourbmi >=20 && yourbmi <=24) {

            form.my_comment.value="Mann was bist du doch für ein Sportlicher Typ. Besuche Sport4Friends.net";
                mybild = "<img src='muskel.jpg' alt='fit'>";

            }

            else if (yourbmi >=19 && yourbmi <20) {

            form.my_comment.value="Wir hoffen das sie noch nicht ausgewachsen sind ansonsten ist dieser BMI bedenklich! ";

            }

            else if (yourbmi >=18 && yourbmi <19) {

            form.my_comment.value="Wir hoffen das sie noch nicht ausgewachsen sind ansonsten ist dieser BMI bedenklich! ";

            }

            else if (yourbmi >=17 && yourbmi <18) {

            form.my_comment.value="VIEL ZU DUENN ";

            }

            else if (yourbmi <=16) {

            form.my_comment.value="Ist an Ihnen noch was drann ausser Haut und Knochen?";
                   }
                   }
                   return;
            }

            // -- Skriptende -->

            </script>

            <head >
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>BMI</title>
            </head>
            <body>

            <table bgcolor="#999999" border=0 width="100%">
                 <tr>
               <td>
               </td>
               <td>
               <center><img src="LogoSport4friends.png" alt="sport4friends" width="653" height="82" longdesc="LogoSport4friends.png" /></center>
               </td>
               <td>

            </tr>
            </table>
            <table bgcolor="#999999" border=0 width="100%">

            <td width="33%">   </td>
               <td width="33%">
                <center><h1> Sind sie Sportlich? </h1></center>   </td>
               <td width="33%">   </td>
              </tr>
              <form name="bmi" method=post>
              <input type="hidden" name="ihr_alter" />
              <tr>
                <td rowspan="4">&nbsp;

            </td>
                <td>Gewicht:
                      <input type ="text" name="gewicht"/></td>
                <td>&nbsp;</td>
                </tr>
              <tr>
                <td>Gr&ouml;sse:&nbsp;&nbsp;
                      <input type ="text" name="groesse"/></td>
                <td>&nbsp;</td>
                </tr>
              <tr>
               <td>Alter:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type ="text" name="alter"/></td>
               <td>&nbsp;</td>
              </tr>

            <tr>
                <td>
               BMI:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                 <input type="text" name="bmi" value="" />   </td>
               <td>
               <textarea name="my_comment" cols="50" rows="6"/></textarea>   </td>
              </tr>

            <tr>
               <td>   </td>
               <td>
               <input type="button" value="Mein BMI zeigen" onClick="computeform(this.form)">
               <input type="button"  value="Neue Eingabe" onClick="ClearForm(this.form)">   </td>
              </tr>

            </form>
            </table>

            <table bgcolor="#999999" title="table_fat" width="100%" border="0" cellPadding="0" cellSpacing="0" >

            <tr>
              <td width="33%">

            </td>
              <td width="33%">
               <script>

            document.write(mybild);

            </script>

            </td>
              <td width="33%">

            </td>
             </tr>

            </table>

            ####################################################

            Es geht um das Befüllen der "mybild" Variablen in der Computeform Funktion. Die Änderungen werden ignoriert und es wird stets der Default-Wert ausgegeben

            1. Hallo,

              Es geht um das Befüllen der "mybild" Variablen in der Computeform Funktion. Die Änderungen werden ignoriert und es wird stets der Default-Wert ausgegeben

              natürlich, das habe ich doch schon vermutet: Die Anweisung document.write(mybild) wird beim Laden des Dokuments ausgeführt, und die Variable später, nämlich beim Absenden des Formulars geändert. Da die Ausgabe längst erledigt ist, hat das eine mit dem anderen nichts mehr zu tun!
              Was du hier andeutest, ist so als ob du überlegst, mit welcher Grußfloskel du den Brief unterschreiben möchtest, den du vorgestern verschickt hast.

              So long,
               Martin

              --
              Paradox ist, wenn jemand eingefleischter Vegetarier ist.
            2. Hello out there!

              Vom JavaScript abgesehen solltest du unbedingt die Fehler in deinem HTML beseitigen.

              <html xmlns="http://www.w3.org/1999/xhtml">

              Du möchtest XHTML schreiben? Gut. Das musst du aber auch http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=angeben.

              Und du musst den http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style@title=Unterschied beachten.

              <script language="JAVASCRIPT">

              http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche@title=Doppelfehler!! Zum einen fehlt ein Pflichtattribut; und das 'language'-Attribut ist je nach XHTML-Variante evtl. sogar falsch, auf jeden Fall ist es überflüssig.

              Zum anderen darf ein 'script'-Element an vielen Stellen im Dokument stehen*, aber nicht als Kind von 'html'. Das hätte dir der Validator auch gesagt.

              See ya up the road,
              Gunnar

              * sollte es aber nicht; aber das ist eine andere Geschichte

              --
              „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
      2. Hallo,

        Prüfst du all deine Beiträge vor dem Veröffentlichen?

        ja, selbstverständlich - einmal Vorschau aufrufen und Korrekturlesen ist das Mindeste. Soviel Zeit muss sein.

        Also lass bitte deinen Ärger nicht an anderen aus wenn du einen miesen Tag/Monat/Leben hast. Das macht es nicht besser.

        Cheatah hat lediglich sanft kritisiert, dass -abgesehen von der schlechten Problemdarstellung- dein sprachlicher Stil bzw. deine Rechtschreibung noch verbesserungsfähig sind.

        Mein JS-Problem:

        ... liegt darin, dass wir nicht die geringste Ahnung haben, in welchem Bezug deine Code-Ausschnitte zueinander stehen. So wie du es beschreibst, muss die gesamte Logik, die zur Ermittlung des gewünschten Bildes führen soll, während des Ladens ablaufen, noch bevor das Dokument gerendert wird - ansonsten wäre document.write() problematisch. Das heißt, es läuft ohne Benutzer-Interaktion. Wovon hängt dann die Bedingung ab, nach der du die Bilder auswählen willst?

        Ich kann nicht innerhalb einer JS-Funktion eine globale Variable verändern.

        Doch, selbstverständlich. Fraglich ist nur, ob die Variable *nach* der Änderung überhaupt noch beachtet wird.

        So long,
         Martin

        --
        Der Mensch denkt, Gott lenkt.
        Der Mensch dachte, Gott lachte.
    2. Hallo Cheatah,

      (...), wenn Du uns den Code nicht häppchenweise servieren würdest, (...)hätte nämlich den Vorteil, dass wir nicht raten müssten, was Du machst.

      Übrigens gibt es in der deutschen Sprache kein Wort namens "Ergebniss".

      "Ergebniß" gibt es in der deutschen Sprache bis zu deren erster verbindlicher Rechtschreibreform sehr wohl.

      http://de.wikipedia.org/wiki/Reform_der_deutschen_Rechtschreibung_von_1901#Beschl.C3.BCsse

      Großgeschriebenes "Du", "Dein", "Dir" und "Dich" gibt und gab es im Deutschen hingegen immer nur im Sonderfall der Textsorte "Brief" oder in briefähnlichen Textsorten. Ob Forumspostings zu so einer Textsorte gehören, darüber wäre noch zu streiten.

      Allerdings sollte neuerdings der Wunsch hinzukommen, dem/der/den Angeredeten "durch Großschreibung besondere Ehrerbietung zu bezeugen". Dazu besteht bei Leuten, mit denen man sich duzt, aber auch in Briefen in aller Regel kein Anlass.

      http://www.duden.de/deutsche_sprache/neue_rechtschreibung/neuregelung/gross_und_klein.php#anrede

      Gruß Gernot

      1. Hi,

        Übrigens gibt es in der deutschen Sprache kein Wort namens "Ergebniss".
        "Ergebniß" gibt es in der deutschen Sprache bis zu deren erster verbindlicher Rechtschreibreform sehr wohl.

        die deutsche Sprache, die im Laufe der Zeit bis heute verändert wurde, gibt es offenbar nur in der Vergangenheit. Die deutsche Sprache sieht vor, dass das Verb dann in die Vergangenheitsform gesetzt wird. Der Satz muss also richtig lauten:

        "Ergebniß" gab es in der deutschen Sprache bis zu deren erster verbindlicher Rechtschreibreform sehr wohl.

        Dies steht in keinem Widerspruch zu meiner Aussage.

        Großgeschriebenes "Du", "Dein", "Dir" und "Dich" gibt und gab es im Deutschen hingegen immer nur im Sonderfall der Textsorte "Brief" oder in briefähnlichen Textsorten.

        Das ist mir a) bewusst und b) egal. Ich habe diese Worte auch in den Phasen der Rechtschreibreform groß geschrieben, in denen ihre diesbezügliche Großschreibung komplett abgeschafft, und ich werde sie voraussichtlich auch solange beibehalten, wie es im Deutschen Großschrift überhaupt gibt. Das von Dir gewählte Subject trifft meine Begründung dazu. Die Ausnahme sind Artikel, die ich im Namen anderer schreibe, also z.B. für meine Auftraggeber.

        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
        1. Hallo Cheatah,

          "Ergebniß" gibt es in der deutschen Sprache bis zu deren erster verbindlicher Rechtschreibreform sehr wohl.

          die deutsche Sprache, die im Laufe der Zeit bis heute verändert wurde, gibt es offenbar nur in der Vergangenheit. Die deutsche Sprache sieht vor, dass das Verb dann in die Vergangenheitsform gesetzt wird. Der Satz muss also richtig lauten:

          "Ergebniß" gab es in der deutschen Sprache bis zu deren erster verbindlicher Rechtschreibreform sehr wohl.

          Auf diesen Einwand habe ich schon gewartet, aber du irrst:

          Erstens gibt es historisches Präsens, das z.B. in Chroniken und Verlaufsprotokollen verwendet werden muss (leider liest man in letzteren häufig auch Perfekt, Präteritum und Plusquamperfekt).

          Ich habe diese Worte auch in den Phasen der Rechtschreibreform groß geschrieben, in denen ihre diesbezügliche Großschreibung komplett abgeschafft (...)

          Zweitens: Selbstvertändlich sind auch historische Zeugnisse der deutschen Sprache Teil der deutschen Sprache und bleiben es auch, was denn sonst?

          Deshalb darfst du auch mit Fug und Recht von dir behaupten, Deutsch geschrieben zu haben, selbst in der Zeit, als die Großschreibung bei den Personalpronomen der 2.Person für wenige Jahre komplett abgeschafft war.

          Gruß Gernot