Avatar billede jammerlab Nybegynder
22. juni 2007 - 22:42 Der er 7 kommentarer og
1 løsning

Hvorfor tæller den hurtigere?

Hej jeg har scriptet fornede... den har en tæller som viser en loading bar der bliver skraveret med tiden + at den viser sekunder tilbage i digital form...

Men den bliver hurtigere færdig med at tælle sekunderne som vises digitalt end den gør med at skravere baren... hvad er fejlen?!!?!

------------------------------

<script>
var loadedcolor='#A3DAA2';
var unloadedcolor='#FFFFFF';
var bordercolor='#000000';
var barheight=15;
var barwidth=300;
var waitTime=<? echo "$seconds"; ?>;

var action=function()
{
window.location="<? echo "$address"; ?>";
}

var ns4=(document.layers)?true:false;
var ie4=(document.all)?true:false;
var blocksize=(barwidth-2)/waitTime/10;
var loaded=0;
var PBouter;
var PBdone;
var PBbckgnd;
var Pid=0;
var txt='';
if(ns4){
txt+='<table border=0 cellpadding=0 cellspacing=0><tr><td>';
txt+='<ilayer name="PBouter" visibility="hide" height="'+barheight+'" width="'+barwidth+'" onmouseup="hidebar()">';
txt+='<layer width="'+barwidth+'" height="'+barheight+'" bgcolor="'+bordercolor+'" top="0" left="0"></layer>';
txt+='<layer width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+unloadedcolor+'" top="1" left="1"></layer>';
txt+='<layer name="PBdone" width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+loadedcolor+'" top="1" left="1"></layer>';
txt+='</ilayer>';
txt+='</td></tr></table>';
}else{
txt+='<div id="PBouter" onmouseup="hidebar()" style="position:relative; visibility:hidden; background-color:'+bordercolor+'; width:'+barwidth+'px; height:'+barheight+'px;">';
txt+='<div style="position:absolute; top:1px; left:1px; width:'+(barwidth-2)+'px; height:'+(barheight-2)+'px; background-color:'+unloadedcolor+'; font-size:1px;"></div>';
txt+='<div id="PBdone" style="position:absolute; top:1px; left:1px; width:0px; height:'+(barheight-2)+'px; background-color:'+loadedcolor+'; font-size:1px;"></div>';
txt+='</div>';
}

document.write(txt);

function incrCount(){
window.status="Loading...";
loaded++;
if(loaded<0)loaded=0;
if(loaded>=waitTime*10){
clearInterval(Pid);
loaded=waitTime*10;
setTimeout('hidebar()',1000);
}
resizeEl(PBdone, 0, blocksize*loaded, barheight-2, 0);
}

function hidebar(){
clearInterval(Pid);
window.status='';
//if(ns4)PBouter.visibility="hide";
//else PBouter.style.visibility="hidden";
action();
}

function findlayer(name,doc){
var i,layer;
for(i=0;i<doc.layers.length;i++){
layer=doc.layers[i];
if(layer.name==name)return layer;
if(layer.document.layers.length>0)
if((layer=findlayer(name,layer.document))!=null)
return layer;
}
return null;
}

function progressBarInit(){
PBouter=(ns4)?findlayer('PBouter',document):(ie4)?document.all['PBouter']:document.getElementById('PBouter');
PBdone=(ns4)?PBouter.document.layers['PBdone']:(ie4)?document.all['PBdone']:document.getElementById('PBdone');
resizeEl(PBdone,0,0,barheight-2,0);
if(ns4)PBouter.visibility="show";
else PBouter.style.visibility="visible";
Pid=setInterval('incrCount()',95);
}

function resizeEl(id,t,r,b,l){
if(ns4){
id.clip.left=l;
id.clip.top=t;
id.clip.right=r;
id.clip.bottom=b;
}else id.style.width=r+'px';
}

var tid = <? echo "$seconds"; ?>;//antal sekunder

window.onload = function(){
  progressBarInit();
  taelNed();
}

function taelNed(){
  tid--;
  document.getElementById("minTid").firstChild.nodeValue = tid;
  if(tid>0)
    setTimeout("taelNed()",1000);
}
</script>
<span class="text1">Time left: </span><span class="text1" id="minTid">&nbsp;</span>
Avatar billede roenving Novice
24. juni 2007 - 02:09 #1
Tjah, det virker, hvis du sætter tiden for opdatering af baren til ca. 80 ms:

...
Pid=setInterval('incrCount()',80);
}

function resizeEl(id,t,r,b,l){
...
Avatar billede Slettet bruger
25. juni 2007 - 05:26 #2
Men kan være du skal escape(<?PHP echo $adresse; ?> din adresse og så redirecte den til unescape(<?PHP echo $adresse; ?>);

Sådan så folk ikke bare kan kopier den direkte, men så det kræver bare lidt at finde adressen. Som måske også tager lidt tid.
Avatar billede roenving Novice
25. juni 2007 - 06:27 #3
Øeh, whaddd ...

-- adressen bliver vel alligevel udskrevet i klartekst i den kode, der rammer browseren ?-)
Avatar billede jammerlab Nybegynder
27. juni 2007 - 21:04 #4
Takker roenving :o)

Smid et svar tak
Avatar billede jammerlab Nybegynder
27. juni 2007 - 22:40 #5
Selvom jeg dog stadig har en bar som er langsommere end tælleren ;)
Avatar billede roenving Novice
28. juni 2007 - 01:24 #6
-- har du prøvet at indstille tiderne anderledes ?-)

-- els velbekomme '-)
Avatar billede jammerlab Nybegynder
28. juni 2007 - 16:38 #7
Min fejl :P tidligere forsøg på at få dem til at følges skulle lige fjernes..
Avatar billede roenving Novice
29. juni 2007 - 00:07 #8
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester