Problem bei einem Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei einem Script

    Hi Leute!

    Hab mal wieder ein Problem...Hab hier dieses Script:

    PHP-Code:
    01 function getStyle(el,styleProp)
    02 {
    03      var document.getElementById(el);
    04      if (x.currentStyle)
    05          var x.currentStyle[styleProp];
    06      else if (window.getComputedStyle)
    07          var document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
    08      return y;
    09 }
    10 
    11 
    function auswahl(wohin) {
    12     jetzt=getStyle('menuitem','width');
    13    jetzt=parseInt(jetzt);
    14    
    15    
    if(wohin>jetzt) {
    16        iv=window.setInterval('machgross('+wohin+','+jetzt+')',1);
    17    }
    18    else if(wohin<jetzt) {
    19        iv=window.setInterval('machklein('+wohin+','+jetzt+')',1);
    20    }
    21 }
    22
    23 
    function machgross(wohin,jetzt) {
    24    document.getElementById('menuitem').style.width=jetzt+"px";
    25    jetzt=jetzt+5;
    26    
    27    
    if(jetzt>=wohin) {
    28        window.clearInterval(iv);
    29    }
    30 }
    31
    32 
    function machklein(wohin,jetzt) {
    33    document.getElementById('menuitem').style.width=jetzt+"px";
    34    jetzt=jetzt-5;
    35    
    36    
    if(jetzt<=wohin) {
    37        window.clearInterval(iv);
    38    }
    39 
    Zeile 24 macht er aber nicht!

    Wenn ich zwischen Zeile 24 und Zeile 25 ein "alert(jetzt)" einfüge gibt er mir bei jedem Durchgang 100 aus. Wenn ich dieses alert nach Zeile 25 mache gibt er mir bei jedem Durchgang 105 aus!

    EDIT: Das heißt auch das "jetzt" nie größer,gleich "wohin" wird und somit eine endlosschleife dastellt!

    Sieht jemand den Fehler?

    mfg
    infernalshade
    Zuletzt geändert von infernalshade; 26.02.2008, 14:14.

  • #2
    Sieht jemand den Fehler?
    das ist kein fehler, sondern genau das, was du programmiert hast. was willst du denn überhaupt machen?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      er soll die breite des div's erst auf 100 setzen...dann "jetzt" um 5 erhöhen, dann beim nächsten durchlauf die breite des div's auf 105 setzen, dann wieder um 5 erhöhen usw...bis eben die "jetzt" >= "wohin" ist.

      Kommentar


      • #4
        dann zeig mal den code, wo du die funktion aufrufst. und den teil, wo du 'jetzt' definierst.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          "jetzt" wird doch in Zeile 12 gesetzt, oder?

          und so ruf ich die Funktion auf:

          PHP-Code:
          <div class="menuitem" id="menuitem" onmouseover="auswahl(150)" onmouseout="auswahl(100)"></div
          mfg

          Kommentar


          • #6
            vielleicht solltest du 'jetzt' zu beginn deines scriptes mal global setzen, also:
            PHP-Code:
            var jetzt
            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Hab ich grad probiert, funktioniert auch nicht...

              Wenn ich über das div fahre rührt sich gar nix und die Fehler-Konsole im Firefox zeigt weder Fehler noch Warnungen!

              Kommentar


              • #8
                ist auch kein wunder, da du hier mit festen werten arbeitest:
                PHP-Code:
                <div class="menuitem" id="menuitem" onmouseover="auswahl(150)" onmouseout="auswahl(100)"></div
                mal ein
                PHP-Code:
                <div class="menuitem" id="menuitem" onmouseover="auswahl(jetzt)" onmouseout="auswahl(jetzt)"></div
                probiert?

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Hä? mit den onmouse-sachen ruf ich ja die funktion auf und da müssen ja werte dirn stehn

                  wenn ich da "jetzt" reinschreibe hat ja die variable "wohin" in der function den string-wert "jetzt"!

                  mfg

                  Kommentar


                  • #10
                    PHP-Code:
                    <div class="menuitem" id="menuitem" onmouseover="auswahl()" onmouseout="auswahl()"></div>
                    ...
                    var 
                    jetzt 100;
                    function 
                    machgross ... 
                    gruß
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      hab ich auch schon probiert, macht er nicht

                      ausserdem ist ja das nicht der sinn der function, weil sich die werte ja auch mal ändern können!

                      mfg

                      Kommentar


                      • #12
                        willst du größe in einer art animation ändern?

                        gruß
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          soll so einen "schiebe"-effekt haben ja

                          Kommentar


                          • #14
                            dann musst du in der function auswahl die größen anpassen und setInterval so lange in einer schleife aufrufen, bis eine bedingung erfüllt ist. schau dir mal das tutorial und/oder das tutorial an. ist dasselbe prinzip.

                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              ja aber genau das mach ich doch! ich starte die intervalschleife in zeile 16/19

                              die läuft dann so lange bis z.b. in zeile 27 das jetzt>=wohin ist...dann macht er die schleife zu!

                              mfg

                              Kommentar

                              Lädt...
                              X