Tomas: DIV verschieben

Hallo,

ich habe auf SelfHTML das folgende Beispiel gefunden: http://de.selfhtml.org/dhtml/modelle/anzeige/ichkreis.htm was in meinem Browser (FF 1.50.2) auch sehr schön fuktioniert.
Ich wollte es nun für meine Zwecke anpassen hänge aber bereits nach den folgenden Zeilen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 <head>
  <title>test</title>
  <script type="text/javascript">
   function meinefunk(){
    el=document.getElementById("meinediv");
    el.style.left=200;
    //el.style.display="none";
   }
  </script>
 </head>
 <body>
   <div id="meinediv" style="background-color:#c0c0c0; width:40px; border-width:1px;" onClick="meinefunk()">test</div>
 </body>
</html>

el.style.display="none" funktioniert ohne Probleme, jedoch left bzw. top nicht.
Bekomme folgende Meldung "Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'left'.  Deklaration ignoriert.
Quelldatei: ~/test.html
Zeile: 0"

Wenn jemand meinen Fehler sieht freue ich mich auf eine Antwort

Gruß Tomas

  1. Hallo Tomas,

    el.style.left=200;

    Bekomme folgende Meldung "Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'left'.  Deklaration ignoriert.

    Und wenn du eine Einheit deklarierst z.B. 'px', geht es denn dann?

    Gruß Gernot

    1. Als erstes:
      Im Beispiel von SelfHTML ist auch KEINE Einheit (ich hab deshalb es so übernommen):

      rp.style.top = Math.round(rpY + (rpRadius * Math.cos(rpGrad)));
        rp.style.left = Math.round(rpX + (rpRadius * Math.sin(rpGrad)));

      Und wenn du eine Einheit deklarierst z.B. 'px', geht es denn dann?

      wenn ich es mit Einheit schreibe bekomme ich (was ich absolut nicht verstehe) folgende Fehlermeldung:

      Fehler: missing ; before statement
      Quelldatei: *test.html
      Zeile: 9, Spalte: 21
      Quelltext: el.style.left=200px;

      1. Hallo Tomas,

        el.style.left=200px;

        Das was du als Zuweisung brauchst, ist natürlich ein String und keine undefinierte Variable namens 200px.

        el.style.left='200px';

        Gruß Gernot

        1. Hy Gernot,

          hatte die Variante mit

          el.style.left="200px";

          schon probiert, jetzt noch deine. Funktioniert auch NICHT.
          Merkwürdig, da ja das Beispiel läuft..

          1. Die Lösung:

            das position-Attribut angeben in der div und dann funktioniert es auch:

            el.style.left="200px";

            Gru0 Tomas :)

            1. Hallo Tomas,

              das position-Attribut angeben in der div und dann funktioniert es auch:

              Dacht ich mir doch!

              Gruß Gernot

        2. Hello out there!

          keine undefinierte Variable namens 200px.

          Nein, '200px' ist kein gültiger Name für eine Variable.

          See ya up the road,
          Gunnar

          --
          “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
          1. Hallo Gunnar.

            Nein, '200px' ist kein gültiger Name für eine Variable.

            Sicher?

            window['200px'] = 'zweihundert Pixel';  
              
            alert(window['200px']);
            

            Variablen sind schließlich auch nur Eigenschaften …

            Einen schönen Montag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
            [HTML Design Constraints: Logical Markup]
            1. Hello out there!

              Nein, '200px' ist kein gültiger Name für eine Variable.
              Sicher?

              Ja.

              var 200px = 'zweihundert Pixel';  
              alert(200px);
              

              See ya up the road,
              Gunnar

              --
              “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
              1. Hallo Gunnar.

                Nein, '200px' ist kein gültiger Name für eine Variable.
                Sicher?

                Ja.

                ∓0, also lassen wir dies.

                Einen schönen Montag noch.

                Gruß, Ashura

                --
                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                [HTML Design Constraints: Logical Markup]
            2. Hallo Ashura,

              Nein, '200px' ist kein gültiger Name für eine Variable.

              Sicher?

              window['200px'] = 'zweihundert Pixel';

              alert(window['200px']);

              
              > Variablen sind schließlich auch nur Eigenschaften …  
                
              hast du heute morgen ein frisches Päckchen [Korinthen](https://forum.selfhtml.org/?t=128635&m=831330) aufgemacht?  
              Ich mein ... ja, du hast ja Recht, aber auf die Idee wäre ich nicht gekommen. ;-)  
                
              Ciao,  
               Martin  
              
              -- 
              Es gibt Tage, da gelingt einem einfach alles.  
              Aber das ist kein Grund zur Sorge; das geht vorbei.
              
              1. Hallo Martin.

                hast du heute morgen ein frisches Päckchen Korinthen aufgemacht?

                Jawohl! Frisch und wohlduftend.

                Ich mein ... ja, du hast ja Recht, aber auf die Idee wäre ich nicht gekommen. ;-)

                Ich wollte auch nur die alternative Schreibweise erwähnen, die nicht den üblichen Beschränkungen von Variablennamen unterliegt.

                Einen schönen Montag noch.

                Gruß, Ashura

                --
                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                [HTML Design Constraints: Logical Markup]
      2. Hello out there!

        Als erstes:
        Im Beispiel von SelfHTML ist auch KEINE Einheit

        Und das ist schlecht. [[ref:bug;1328@title=Bug 1328]] Hat mich ’ne Weile gekostest herauszufinden, warum das Beispiel trotzdem funktioniert: Doctype-Switch!

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
        <html>  
          <head>  
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
            <title>TEST</title>  
            <script type="text/javascript">  
        [code lang=javascript]      window.onload = function() {  
                foo = document.getElementById("fooId");  
                foo.style.position = "absolute";  
                foo.style.top = "100px";  
                foo.style.top = 200;  
                foo.firstChild.data += foo.style.top;  
              }
        

        </script>
          </head>
          <body>
            <div id="fooId">foo.style.top: </div>
          </body>
        </html>[/code]

        Auch der Firefox 1.5.0.2 übernimmt die fehlerhafte Angabe '200' (und in foo.style.top steht dann '200px'), aber nur bei Doctype-Angaben HTML 2.0, HTML 3.2, HTML 4.01 Transitional _ohne_ System Identifier (und auch ohne Doctype-Angabe).

        Bei HTML 4.01 Transitional _mit_ System Identifier, HTML 4.01 Strict mit oder ohne System Identifier, XHTML wird die fehlerhafte Angabe ignoriert, foo.style.top bleibt bei '100px'.

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  2. Hallo Tomas,

    el.style.left=200;

    el.style.display="none" funktioniert ohne Probleme, jedoch left bzw. top nicht.
    Bekomme folgende Meldung "Fehler: Fehler beim Verarbeiten des Wertes für Eigenschaft 'left'.  Deklaration ignoriert.

    Da hat er völlig Recht, der Firefox. Was sollen die 200 bedeuten? 200 Steinpilze? Oder doch eher 200 Hühnerkeulen?
    Zu einer CSS-Maßangabe gehört *immer* eine Einheit!

    Schönen Feiertag noch,
     Martin

    --
    Der Alptraum jedes Computers:
    "Mir war, als hätte ich gerade eine 2 gesehen."
    1. Hallo Martin.

      Zu einer CSS-Maßangabe gehört *immer* eine Einheit!

      Natürlich nur, sofern sie ungleich 0 ist.

      Einen schönen Montag noch.

      Gruß, Ash*jaja, Klugscheißer*ura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. Hallo Ashura,

        Zu einer CSS-Maßangabe gehört *immer* eine Einheit!
        Natürlich nur, sofern sie ungleich 0 ist.

        stimmt natürlich.
        Aber selbst dann *schadet* eine Einheit auch nicht.

        Gruß, Ash*jaja, Klugscheißer*ura

        Fröhliches Korinthenk****,  ;-)
         Martin

        --
        Der Stress von heute ist die gute alte Zeit von morgen.
        1. Hallo Martin, hallo Ashura,

          dann geb ich jetzt meinen Kölner Senf auch noch dazu:

          Gruß Gernot

  3. Hallo Tomas,

    <div id="meinediv" style="background-color:#c0c0c0; width:40px; border-width:1px;" onClick="meinefunk()">test</div>

    Könnte es -abgesehen von allem zuvor Gesagten zu Einheiten und der Zuweisung als String, was du ja mittlerweile berücksichtigst- daran liegen, dass du dich zu dem Wert von position (absolute/relative) gar nicht auslässt? Der wird in dem SELFHTML-Beispiel nämlich in der Init()-Funktion gesetzt:

      
    ich.style.position = "absolute";
    

    Gruß Gernot