tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
362
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Mar 2002
    Ort
    Switzerland
    Beiträge
    189
    Hallo Zusammen

    Ich habe einen Preloader gefunden, der eigentlich ganz gut funktionieren würde. Leider wird er jedoch mit Blockelementen (DIV) unschön angezeigt, und zwar mit absolut-Angaben. Ich wollte den DIV-Elementen relative Angaben zuweisen und sie mit dem "z-index" von CSS schön übereinander lagern. Seit ich das getan habe, funktioniert der Prozentbalken nicht mehr und im Browser wird eine JavaScript-Fehlermeldung ausgegeben: Objekt erforderlich. Und zwar in Zeile 59, Zeichen 2. Hier mal der Code:

    Code :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    
    <html>
    <head>
     
    <script>
     
    ///////////////////////////////////////////////
    // PUT ALL IMAGES IN AN ARRAY FOR PRELOADING //
    ///////////////////////////////////////////////
    var pics = new Array("images/nav/anmeldung1.gif", "images/nav/anmeldung2.gif", "images/nav/dokumente1.gif", "images/nav/dokumente2.gif", "images/nav/events1.gif" ,"images/nav/events2.gif", "images/nav/home1.gif", "images/nav/home2.gif", "images/nav/kontakt1.gif", "images/nav/kontakt2.gif", "images/nav/links1.gif", "images/nav/links2.gif", "images/nav/training1.gif", "images/nav/training2.gif", "images/nav/vorstand1.gif", "images/nav/vorstand2.gif");
     
    ///////////////////////////////////////////////////
    // ENTER URL TO GOTO AFTER IT FINSHES PRELOADING //
    ///////////////////////////////////////////////////
    var url = "index2.php";
     
    ////////////////////////////////////////////////////
    // ASK USERS TO GO TO NEXT PAGE AFTER PRELOADING? //
    //////////////////////////////////////////////////// 
    var doConfirm = true;
     
    ////////////////////////////////////
    // ALLOW USER TO SKIP PRELOADING? //
    ////////////////////////////////////
    var canSkip = false;
     
     
    ////////////////////////////////////////////////////////////////////////////////////
    //------------YOU ARE DONE, DON'T EDIT ANYTHING BEYOND THIS POINT-----------------//
    ////////////////////////////////////////////////////////////////////////////////////
     
     
    var imgObjs = new Array(pics.length);
    var loaded = 0;
    var total = pics.length;
    var cPercent = 0;
     
    var barLayer = null;
    var percentLayer = null;
    var statLayer = null;
    var doneMsgLayer = null;
     
     
    function getLayer(layerID) {
    if (document.getElementById)
        return document.getElementById(layerID);
    else if (document.all)
        return document.all[layerID];
    else 
        return null;
    }
     
     
    function updateBar() {
    statLayer.innerHTML = "<font face=\"Verdana\" color=\"#000000\"><B>" +loaded+ "/" +total+ "</B></font>";
    var percent = Math.round(loaded/total * 100);
    if (cPercent != percent)
        {
        cPercent = percent;
        barLayer.style.width = (cPercent*3) +"px";
        percentLayer.innerHTML = "<font face=\"Verdana\" color=\"#000000\"><B>" +cPercent+ "%</B></font>";
        }
    if (loaded == total)
        {
        doneMsgLayer.innerHTML = "<a href=\"javascript:done()\">";
        if (!doConfirm || (doConfirm && confirm("Files have finished loading, continue to next page?")))
            done();
        }
    }
     
     
     
     
    function startLoading() {
    if (document.getElementById || document.all)
        {
        barLayer = getLayer("bar");
        percentLayer = getLayer("percent");
        statLayer = getLayer("stat");
        doneMsgLayer = getLayer("doneMsg");
        if (canSkip)
            doneMsgLayer.innerHTML = "<a href=\"javascript:done()\"><font color=\"#FFCC00\" size=\"2\" face=\"Arial\">Skip Pre-Loading</font></a>";
        for (i=0; i<pics.length; i++)
            {
            imgObjs[i] = new Image();
            imgObjs[i].onload = imgLoaded;
            imgObjs[i].onerror = imgFailed;
            imgObjs[i].src = pics[i];
            }
        }
    else
        {
        alert("You are likely running very old browser which is not compatible with preloading script.  Maybe it is time to update your browser.\n\nProgram is skipping preloading.");
        window.location.replace(url);
        }
    }
     
     
     
     
    function done() {
    window.location.replace(url);
    }
     
     
     
    function imgFailed() {
    alert("The following image failed to load, probably a broken link:\n" +this.src+ "\nPlease contact the webmaster of the site you are visiting about this.  The program will skip this file now.");
    loaded++;
    updateBar();
    }
     
    function imgLoaded() {
    loaded++;
    updateBar();
    }
     
     
     
    </script>
    </head>
     
    <body bgcolor="#506080" onLoad="startLoading()">
     
    <div id="bg" align="center" style="position:relative; top:19px; z-index:2; background-color: #DDDDDD; width:300px; height:20px;>&nbsp;</div>
    <div id="bar" align="center" style="position:relative; z-index:4; background-color:#ff9900; width:1px; height:20px;">&nbsp;</div>
    <div id="percent" style="position:relative; z-index:3;" align="center"><font face="Verdana" color="#000000"><B>0%</B></font></div>
    <div id="doneMsg" style="position:relative; top:250px; left:720px;"></div>
     
     
    <div id="doneMatter" align="center" style="position:relative; z-index:1; top:10px; width:700px;">
    <center><font color="#FFFFFF" face="Verdana" size="2">Lade Bilder...</font></center><BR>
    </div>
    <div id="stat" align="center" position:relative;><center><font face="Verdana" color="#FFFFFF" size="2"><B>0/0</B></font>
    </center></div>
     
    </body>
    </html>

    Was habe ich falsch gemacht? Zeile 59 ist übrigens diese hier:

    Code :
    1
    
    barLayer.style.width = (cPercent*3) +"px";
    Es muss natürlich etwas mit der relativen Positionierung zu tun haben, aber da ich in JS nicht wirklich super bin habe ich keine AHnung was ich dort verändern muss damit alles funktioniert.

    Danke für eure Hilfe!
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Du hast im <div> "bg" nach in der style-Definition das schliessende Anführungszeichen vergessen, deswegen findet er "bar" nicht, folglich bleibt "barLayer"==null.
     

  3. #3
    Registriert seit
    Mar 2002
    Ort
    Switzerland
    Beiträge
    189
    Ah, danke, das habe ich übersehen
    Das war jedoch nicht der einzige Grund... Die Reihenfolge der Layers stimmte auch nicht und auch nach der Korrektur wurde der Fortschrittsbalken nicht angezeigt - nun hat es aber geklappt nachdem alles korrigiert ist.

    Danke und Gruss aus der Schweiz
     

Ähnliche Themen

  1. Preloader? Ich finde den Fehler nicht!
    Von Frusciante im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 15.12.06, 09:50
  2. Fehler Objekt erforderlich
    Von Nospherates im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 16.09.05, 11:16
  3. Welchen Fehler habe ich bei dem preloader gemacht?
    Von RealSuain im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 18.12.04, 20:32
  4. Javascript Preloader Fehler
    Von darkcold_Angel im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 29.09.04, 13:41
  5. Preloader - Script-Fehler
    Von mC pAiN im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 20.08.03, 18:47