Funktion mit Onload vom Body nur einmal ausführen

G

GMT

Gast
Hallo,

ich hab ein Problem mit meiner Homepage. Unzwar möchte ich gerne ein Fenster bzw. ein Div Ausfahren und wieder Einfahren.
Natürlich mir Javascript ;-)

Hier mein Code:

Java:
<script type="text/javascript">
var sicherung=new Array();
var active=new Array();
var speed=3 ;

function startstopp()
{
	changeDiv('top3')
	setTimeout (startstopp, 8000);
	changeDiv('top3')
}


function changeDiv(id)
{
    var object=document.getElementById(id);
    var hoehe=object.style.height;
    var sichtbar=object.style.display;
    var nr=id.substr(-1);
    if(active[nr]!=false && active[nr]!=true)
        active[nr]=false;
    if(active[nr]==false)
    {
        active[nr]=true;
        if (sichtbar=='none')
        {
            object.style.height='0px';
            object.style.display='block';
            changeDivRek(id,'0',hoehe.substr(0,3));
        }
        else
        {
            sicherung[nr]=0;
            changeDivRek(id,hoehe.substr(0,(hoehe.length-2)),'0');
        }
    }
}
function changeDivRek(id,curHeight,maxHeight)
{
    var object=document.getElementById(id);
    var nr=id.substr(-1);
    curHeight=parseInt(curHeight);
    if(curHeight < maxHeight)
    {
        curHeight+=speed;
    }
    else
    {
        if(sicherung[nr]==0)
            sicherung[nr]=curHeight;
        curHeight-=speed;
    }
    object.style.height=curHeight+'px';
    if(curHeight == 0 || (curHeight>=maxHeight && maxHeight!=0))
    {
        if(curHeight <= 0)
        {
            object.style.display='none';
            object.style.height=''+sicherung[nr]+'px';
        }
        active[nr]=false;
    }
    else
    {
    window.setTimeout(function() {changeDivRek(id,curHeight,maxHeight)}, 20);
    }
}
</script>

So also starte ich beim:
HTML:
<body onload="startstopp()">
Die StartStopp Funktion die Das Fenster rausfahren soll 8000 ms warten soll dann wieder einfahren soll. Komischer Weise macht er das dann die ganze Zeit es hört nicht auf wie kann ich das lösen?

Grüße GMT
 
G

Gast2

Gast
Dann solltest du das Problem aber vielleicht lieber in nem Javascript Forum stellen bzw. hier im Javascript Unterforum.
 

HimBromBeere

Top Contributor
Du machst einen rekursiven Funktionsaufruf:
HTML:
function startstopp()
{
    changeDiv('top3')
    setTimeout (startstopp, 8000);
    changeDiv('top3')
}
Du müsstest schon eine Abbruchbedingung einfädeln, ansonsten verhedderst du dich in einer Endlosschleife, weil du jedes Mal wieder in die startstopp() reinspringst. Erfinde eine Variable isDone, die zu Beginn der Funktion geprüft wird. Ist sie bereits da, soll nichts weiter unternommen werden, ansonsten führe den Rest aus.
 

jwiesmann

Bekanntes Mitglied
[XML]
<!--mach mal so:-->
<body onload="changeDiv('top3');setTimeout (function(){changeDiv('top3')}, 8000);void(0);">
[/XML]

Gruß!
 

HimBromBeere

Top Contributor
Die Idee hatte ich auch schon, habe sie dann allerdings nicht geschrieben, weil sie doch schon sehr hässlich aussieht (mittem im html-Code Skripte zu schreiben finde ich immer ziemlich unübersichtlich). Besser wäre an der Stelle einfach den Code in eine Hilfsfunktion zu wursten und diese Funktion dann von onLoad aus aufzurufen.
 

jwiesmann

Bekanntes Mitglied
Dann machste es halt so:
[XML]
function startstopp()
{
changeDiv('top3');
setTimeout (function(){changeDiv('top3')}, 8000);
}

<!-- im HTML dann -->
<body onload="startstopp();">
[/XML]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R onload Aufruf einer Funktion in einer Funktion Angular, React, JQuery - Fragen zu JavaScript 2
H Funktion aufrufen ohne Button Angular, React, JQuery - Fragen zu JavaScript 14
M Funktion in einer Funktion Angular, React, JQuery - Fragen zu JavaScript 1
Lighty Math.pow funktioniert nicht innerhalb Funktion/Schleife Angular, React, JQuery - Fragen zu JavaScript 7
pkm Frage zu Parametern bei der toLocaleString-Funktion von Date Angular, React, JQuery - Fragen zu JavaScript 3
R Wenn-Dann-Funktion in einem Adobe Acrobat Formular Angular, React, JQuery - Fragen zu JavaScript 0
X Mehrfaches Nutzen einer Funktion Angular, React, JQuery - Fragen zu JavaScript 1
P Funktion aufrufen Angular, React, JQuery - Fragen zu JavaScript 1
Anfänger2011 Ergebnis einer Funktion direkt in Variable speichern Angular, React, JQuery - Fragen zu JavaScript 6
L Wenn Dann Funktion Angular, React, JQuery - Fragen zu JavaScript 13
A Auswahlliste mit Funktion verknüpfen Angular, React, JQuery - Fragen zu JavaScript 13
E Darf anonyme Funktion Parameter haben ? Angular, React, JQuery - Fragen zu JavaScript 4
F JavaScript replace funktion Angular, React, JQuery - Fragen zu JavaScript 1
L Javascript Maus Funktion Angular, React, JQuery - Fragen zu JavaScript 4
Kenan89 JS OO Funktion wird falsch aufgerufen Angular, React, JQuery - Fragen zu JavaScript 2
S Kleine JS-Funktion funktioniert im Firefox nicht wie sie sollte Angular, React, JQuery - Fragen zu JavaScript 9
M Problem mit Java-Funktion Angular, React, JQuery - Fragen zu JavaScript 3
A Problem mit checkdate-Funktion. Angular, React, JQuery - Fragen zu JavaScript 3
L Funktion und Variablen Angular, React, JQuery - Fragen zu JavaScript 4
G php funktion in java einfügen Angular, React, JQuery - Fragen zu JavaScript 6
C JS funktion funktioniert nicht / wird nicht aufgerufen. Angular, React, JQuery - Fragen zu JavaScript 2
M Funktion "Speichern Unter" abschalten. Angular, React, JQuery - Fragen zu JavaScript 14
T wie kann ich daraus eine Funktion machen? Angular, React, JQuery - Fragen zu JavaScript 2
M Array Rückgabe wert an andere Funktion ? Angular, React, JQuery - Fragen zu JavaScript 2
C Javascript problem links ohne funktion Angular, React, JQuery - Fragen zu JavaScript 12
C JavaScript Menü, Funktion hinzufügen Angular, React, JQuery - Fragen zu JavaScript 5
B DOM Baum in JavaScript document.body.childNodes[1] Angular, React, JQuery - Fragen zu JavaScript 10

Ähnliche Java Themen


Oben