Amerlander: function wiederholt sich nicht (window.setTimeout)

Hallo,
ich versuche den Hintergrund von einem Div mit Javascript zu bewegen.
Mein Code dazu sieht so aus:

<script type="text/javascript">  
  
function bg () {  
	document.getElementById("kopf").style.backgroundPosition += 1;  
	window.setTimeout("bg()", 100);  
}  
</script>

<body onload="bg()">

Den Hintergrund zu bewegen klappt auch, nur wird die Funktion leider nur einmal ausgeführt und nicht wiederholt.

Ist sicher ein sehr banales Problem, aber auf den Entsprechenden selfhtml Seiten konnte ich nicht finden, wie ich es besser machen kann. ( http://de.selfhtml.org/dhtml/modelle/dom.htm#css_eigenschaften )

  1. Hi,

    document.getElementById("kopf").style.backgroundPosition += 1;
    Den Hintergrund zu bewegen klappt auch,

    ehrlich? Mich würde interessieren, wie der Wert der background-position-Eigenschaft da aussieht, dass er mehr als ein einziges Mal etwas ändern kann - nämlich von "gültig" zu "ungültig".

    nur wird die Funktion leider nur einmal ausgeführt und nicht wiederholt.

    Wie hast Du diese Behauptung verifiziert?

    Ist sicher ein sehr banales Problem,

    Du erzeugst keine gültigen Werte für background-position.

    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. document.getElementById("kopf").style.backgroundPosition += 1;  
      

      Den Hintergrund zu bewegen klappt auch,

      ehrlich? Mich würde interessieren, wie der Wert der background-position-Eigenschaft da aussieht, dass er mehr als ein einziges Mal etwas ändern kann - nämlich von "gültig" zu "ungültig".

      Ja es klappt, im Opera und im Fierfox. Andere hab ich nicht getestet.
      Hab mir das jetzt gerade im Dragonfly angeschaut, um zu schauen was da für ausgabe werte sind.
      Im CSS steht urpsrügblich
      "backgroundPosition = 0px"
      wenn die Seite aufgerufen ist und Javascript den Wert geändert hat steht da
      "backgroundPosition = 10px 50%"
      Wobei das auch da steht, wenn der anfangswert ein anderer ist. Wenn ich den Wert im Javascript ändere (+=100) steht da eben entsprechend "=100px 50%".

      nur wird die Funktion leider nur einmal ausgeführt und nicht wiederholt.

      Wie hast Du diese Behauptung verifiziert?

      indem ich die Werte hinter geändert habe (+= 1, +=10, +=100) und das Hintergrundbild jedes mal anders verschoben wurde. Ob das als Verifizierung für meine Behauptung ausreicht kann ich nicht beurteilen.

      Du erzeugst keine gültigen Werte für background-position.

      Danke. Ich hab jetzt versucht, gültige Werte zu erzeugen.
      Mein Versuch dazu sieht so aus:

      <script type="text/javascript">  
      var wert1;  
        
      function start() {  
      	wert1 = 0;  
      }  
        
      function bg () {  
      	wert1 -= 10;  
      	neu = wert1 + "px 0px";  
      	document.getElementById("kopf").style.backgroundPosition = neu;  
      	window.setTimeout("bg()", 100);  
      }  
      </script>
      
      <body onload="start()">  
      <div id="kopf"></div>
      

      Das ist aber leider Ergebnislos. In der Ausgabe passiert dabei gar nichts. Der wert bleibt wie er ist.

      Amerlander

      1. Hi,

        Mein Versuch dazu sieht so aus:

        <script type="text/javascript">

        var wert1;

        function start() {
        wert1 = 0;
        }

        function bg () {
        wert1 -= 10;
        neu = wert1 + "px 0px";
        document.getElementById("kopf").style.backgroundPosition = neu;
        window.setTimeout("bg()", 100);
        }
        </script>

        
        > ~~~html
        
        <body onload="start()">  
        
        > <div id="kopf"></div>
        
        

        Das ist aber leider Ergebnislos. In der Ausgabe passiert dabei gar nichts. Der wert bleibt wie er ist.

        Und die Funktion bg auch mal aufzurufen, hältst du momentan für überflüssig ...?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Und die Funktion bg auch mal aufzurufen, hältst du momentan für überflüssig ...?

          irgendwas vergesse ich immer :/

          dankeschön, jetzt klappt es.

          MfG ChrisB

          lg
          Amerlander

  2. Hello,

    document.getElementById("kopf").style.backgroundPosition += 1;

    Welche Einheit hat backgroundPosition?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de