Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] Fade script, content wil niet opkomen.

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik ben bezig om met behulp van javascript een fade script te maken waarmee een div verdwijnt en een andere automatisch tevoorschijn komt. Nu heb ik van internet een deel van een script gehaald en zelf een stuk bijgeschreven.

Wanneer ik met behulp van een onClick event de functie fader start, dan verdwijnt netjes de oldDiv, de nieuwe div (newDiv) komt alleen niet tevoorschijn...

Wie o wie ziet het probleem en kan mij een beetje op weg helpen :) ?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//  Global JS variable to hold obj of ElementID for item we are fading
var ElementID = "";
var ReducingFinished = false;
var ElementOpacityLevel = 100;
var OpacityLevelIncrement = 5;    //  Percentage value: 1-100
var FadeDelayMS = 60;             //  Milliseconds

// Functie voor het oproepen van de benodigde content.
function fader(oldDiv, newDiv) {    
    // Verbergen van de oude div.
    ElementID = document.getElementById(oldDiv);
    reduceOpacity();
    // Als het verbergen klaar is, de nieuwe div laten verschijnen.
    if (ReducingFinished == true) {
        ElementOpacityLevel = 0;
        ElementID = document.getElementById(newDiv);
        increaseOpacity();
    }
}

//  Makes element more visible
function increaseOpacity() {
    //  Check to make sure the ElementID is already set as visibility=visible
    if (ElementID.style.visibility != "visible") {
        ElementID.style.visibility = "visible";
    }
    if (ElementID.style.display != "") {
        ElementID.style.display = "";
    }
    
    //  If opacity level is less than 100, we can still increase the opacity
    if ((ElementOpacityLevel < 100) && (ReducingFinished == true)) {
        ReducingFinished = true;
        ElementOpacityLevel += OpacityLevelIncrement;
        ElementID.style.MozOpacity = ""+(ElementOpacityLevel/100);
        ElementID.style.opacity = ""+(ElementOpacityLevel/100);
        ElementID.style.filter = 'alpha(opacity='+ElementOpacityLevel+')';
        setTimeout("increaseOpacity()", FadeDelayMS);
    } else {
        ReducingFinished = false;
    }
}

//  Makes element less visible
function reduceOpacity() {
    //  If opacity level is greater than 0, we can still reduce the opacity
    if ((ElementOpacityLevel > 0) && (ReducingFinished == false)) {
        ReducingFinished = false;
        ElementOpacityLevel -= OpacityLevelIncrement;
        ElementID.style.MozOpacity = ""+(ElementOpacityLevel/100);
        ElementID.style.opacity = ""+(ElementOpacityLevel/100);
        ElementID.style.filter = 'alpha(opacity='+ElementOpacityLevel+')';
        setTimeout("reduceOpacity()", FadeDelayMS);
    } else {
        ReducingFinished = true;
    
        //  When finished, make sure the ElementID is set to visibility=hidden
        if (ElementID.style.visibility != "hidden") {
            ElementID.style.visibility = "hidden";
        }
    }
}

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Het probleem is dat via de interval alleen reduceOpacity wordt aangeroepen. Echter de eerste call wordt naar fader() gedaan. Echter de eerste return value van reduceOpacity (in fader()) is dus false. increaseOpacity wordt dus niet aangeroepen en daardoor wordt de andere div niet zichtbaar.

Je zult in een 'globale' variable de nieuwe div moeten onthouden en op de plaats in reduceOpacity waar nu true wordt terug gegeven, daar roep je increaseOpacity aan. Althans dat is de quickfix. Een betere oplossing zou zijn via de interval fader() aan te roepen.

If it isn't broken, fix it until it is..


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Niemand_Anders schreef op woensdag 09 januari 2008 @ 15:15:
Het probleem is dat via de interval alleen reduceOpacity wordt aangeroepen. Echter de eerste call wordt naar fader() gedaan. Echter de eerste return value van reduceOpacity (in fader()) is dus false. increaseOpacity wordt dus niet aangeroepen en daardoor wordt de andere div niet zichtbaar.

Je zult in een 'globale' variable de nieuwe div moeten onthouden en op de plaats in reduceOpacity waar nu true wordt terug gegeven, daar roep je increaseOpacity aan. Althans dat is de quickfix. Een betere oplossing zou zijn via de interval fader() aan te roepen.
Thanks! Logisch natuurlijk (die quickfix). Ik zat weer eens te veel binnen de eigen functie te kijken |:( .