JS: Rekursive Funktion und Argumentenübergabe

Dieses Thema JS: Rekursive Funktion und Argumentenübergabe im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Cledith, 8. Feb. 2005.

Thema: JS: Rekursive Funktion und Argumentenübergabe Hi, ich stehe gerade auf dem Schlauch. Ich sehe es nicht. Folgender Code macht so viel als einen DIV Container von...

  1. Hi,
    ich stehe gerade auf dem Schlauch. Ich sehe es nicht.

    Folgender Code macht so viel als einen DIV Container von der Breite 10px bis zur Breite maxwidth zu vergrößern. Nichts wildes, nur soll die Funktion nicht für einen speziellen Container sein sondern natürlich vielseitig benutzbar sein.

    Code:
    var k=0;
    
             function size(obj,maxwidth){
             	k = k + 6;
                     document.getElementById(obj).style.width = k + px;
    
                     timer = setTimeout(size('+obj+',+maxwidth+),5);
                     if(k > maxwidth){
                     	clearTimeout(timer);
                             k=10;
                             maxwidth=0;
                     }
             }
             function show_menu(obj,maxwidth){
                     object = document.getElementById(obj);
    
                     if(object.style.visibility == visible){
                       	object.style.visibility = hidden;
                     }else{
                     	object.style.visibility = visible;
                             size(obj,maxwidth)
             	}
             }
    
    Jetzt wollte ich das so machen, dass die ID als zweites Argument mitgegeben wird. Nur wenn ich die Funktion size() rekursiv aufrufe, dann müsste der Objektname wohl als String übergeben werden, was er aber anscheinend nicht wird. Jedenfalls steht der Objectname nach dem ersten rekursiven Aufruf nicht mehr zur Verfügung.

    Kann mir jemand sagen, wie ich das machen kann? Wenn möglich nichts fertiges, darf aber natürlich nach belieben umgeschrieben werden.

    Ich danke!

    // Edit:
    Problem ist dank Conny schon gelöst. Der obige Code funktioniert. Das Posting kann gerne auch gelöscht werden, ist kein Problem mehr. Danke nochmals @ Conny.
     
  2. Hi

    Warum sich mit Rekursion einen abbrechen?
    Du kannst das Timeout auch einfach in eine Schleife reinsetzen, und so die Breite vergrößern.
    Rekursion ist zwar schön, aber immer auch langsamer.
    Würd ich gerade für flüssige JS Animationen nicht nehmen.

    Gruß, Michael
     
  3. @Micha,

    Cledith hat nen RIESEN Sch... gebaut *grins*
    Hoffentlich gibt er es auch zu ;D ;D ;D

    gruss conny

    edit:
    Ich bin ne Petze

    Falsch:
    Code:
    size('+ob+',+maxwidth+),5);
    Richtig:
    Code:
    size('+obj+',+maxwidth+),5);
     
  4. Hi

    Also dass der obige Code funktioniert glaub ich aber immer noch nicht 8)

    Gruß, Michael
     
  5. @Micha:

    Ich verstehe nicht ganz, wie du das ganze meinst. Kannst du das evlt. nen biscschen plausibel machen?
     
  6. Tut er aber ;)
     
  7. Hi

    z.B.:

    function size(obj,maxwidth){
    k = k + 6;
    document.getElementById('ID_des_DIV_Containers').style.width = k + px;

    timer = setTimeout(size('+ob+',+maxwidth+),5);
    if(k > maxwidth){
    clearTimeout(timer);
    k=10;
    maxwidth=0;
    }
    }

    Gruß, Michael
     
  8. Das kommt doch dann aber aufs selbe hinaus. Ob ich eine Funktion rekursiv aufrufe oder aus einer Schleife eine Funktion x-mal hintereinander. Oder ist da nen Unterschied?

    Haarspalter! :) Korrigiert.
     
  9. @Michael,

    aber heut seit ihr beide Blind

    obj und ob is ein Unterschied

    gruss conny
     
Die Seite wird geladen...

JS: Rekursive Funktion und Argumentenübergabe - Ähnliche Themen

Forum Datum
Open Office Datei direkt versenden funktioniert nicht .... Windows 10 Forum 31. Okt. 2016
HDD funktioniert nicht. Windows 10 Forum 30. Sep. 2016
Tastatur funktioniert nicht richtig - aber nur beim Login Hardware 23. Sep. 2016
WLan funktioniert erst beim zweiten Start des Notebooks Windows 10 Forum 28. Aug. 2016
Windows Update 10 funktioniert nicht Windows 10 Forum 9. Juni 2016