Avatar billede mskjoldp Novice
13. december 2004 - 18:04 Der er 9 kommentarer og
1 løsning

fejl i blinkfunktion, hvis et db'udtræk ikke validere blink

Hej E

Jeg har med glæde fundet et blinkscript der får et felt/text til at blinke hvis en parameter er opfyldt. Teksten blinker fint i det tilfælde at der er et db'udtræk hvor:
<td <%if rs("MOC_SI_min") > 2700 then%>class="blink roed"<%end if%> ...

men hvis rs("MOC_SI_min") er midre end 2700, så får jeg en fejl der lyder:
'length' er null eller ikke et objekt

hvor fejlen ref til denne linje:
  for(i=0;e.length>i;i++){

men for at forstå dette må jeg hellere smide noget kode.
btw koder på en iis5.0 asp til IE

/Skjold
Avatar billede mskjoldp Novice
13. december 2004 - 18:08 #1
koden der beskriver blink-funktionen:

<style type="text/css">
.blink{visibility:hidden;}
.roed{background:#fef;color:red;}
.blaa{background:#efe;color:blue;}
</style>
<script language="javascript" type="text/javascript">
function getElementsByClassName(c,t,e){
  switch(getElementsByClassName.arguments.length){
    case 0:
      return null;
    case 1:
      t = '*';
      e = document;
      break;
    case 2:
      e = document;
  }
  var r = new Array(),tags = e.getElementsByTagName(t);
  for(i=0;tags.length>i;i++){
    if(tags[i].className.indexOf(c)>-1)r[r.length] = tags[i];
  }
  return (r.length>0)?r:null;
}
var start=0;
function startBlink(){
  start = ++start%5;
  var e = getElementsByClassName('blink');
  for(i=0;e.length>i;i++){
    e[i].style.visibility = (start != 0)?'visible':'hidden';
  }
  setTimeout('startBlink()',100);
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body onload="startBlink();">



hvor der længere ned i db'udtrækket forsøges brugt blink:
<td <%if rs("MOC_SI_min") > 2700 then%>class="blink roed"<%end if%> ....



som skrevet før, så virker dette fint sålænge rs("MOC_SI_min") er større end 2700, eller for jeg fejlen...

/Skjold

PS kan det passe at dette blinkscript sløver client-side reaktionstiden pga det setTimeout delay der er brugt?
Avatar billede mskjoldp Novice
13. december 2004 - 18:12 #2
hmmm.. det ser ud til at kunne løses ved at indsætte:

<input type="hidden" class="blink">

nederst på siden....

Er det en god løsning?

/Skjold
Avatar billede mskjoldp Novice
13. december 2004 - 18:16 #3
Der er en forskel i IE reaktionshastighed til musseklik m.m. alt efter om det er et langt db'udtræk eller et kort...

Dvs ved et kort db'udtræk reagere IE normalt på dette script, men ved at langt db'udtræk (=70 Response.write) reagere PC'en langsomt på hjemmesiden...

Er der nogen der har en løsning til dette?

Jeg ændre ikke i nogen setTimeout....
Avatar billede mskjoldp Novice
13. december 2004 - 19:24 #4
Jeg ved ikke hvorfor, men dette script sløver ikke PC'en...:

<script>
on=true
delay=800
function blink() {
    if(on){show = "hidden"; on=false}
    else{show = "visible"; on=true}
    document.getElementById("blink").style.visibility=show
    setTimeout('blink()',delay)
}
</script>

der bruges således i db'udtræk:

<%if rs("MOC_SI_min") > 2700 then%><span id="blink"><%=formatnumber((rs("MOC_minutter")/60),2)%></span><%else%><%=formatnumber((rs("MOC_minutter")/60),2)%><%end if%>


...såå lige nu virker min blinkfunktion fint...
Avatar billede olebole Juniormester
13. december 2004 - 19:55 #5
<ole>

Skriver du altid til et forum, når du trænger til at tale med dig selv?  :D

/mvh
</bole>
Avatar billede mskjoldp Novice
13. december 2004 - 20:49 #6
hehe , tjaaaa hvorfor ik ;)
Avatar billede olebole Juniormester
13. december 2004 - 21:18 #7
*LooL* Hvis du er tilfreds med din besvarelse, skal du nok lægge et svar og acceptere. På den måde lukkes spørgsmålet.
Samtidig undgår du (spørgeren), at du (svareren) bliver sur på dig (spørgeren) selv og du (spørgeren) får en skideballe af ....... ehhhhhhmmm ..... glem det  ;D
Avatar billede mskjoldp Novice
13. december 2004 - 22:52 #8
hahah.. LOL ole.. SÅ er det i SENG!
Avatar billede mskjoldp Novice
13. december 2004 - 23:06 #9
EJ, nu virker det ikke hvis der er flere felter der er over 2700 ..... pi*
Avatar billede mskjoldp Novice
13. december 2004 - 23:12 #10
Hvordan udviddes denne kode til at kunne tage flere listede felter efter hinanden...:

<script>
on=true
delay=800
function blink() {
    if(on){show = "hidden"; on=false}
    else{show = "visible"; on=true}
    document.getElementById("blink").style.visibility=show
    setTimeout('blink()',delay)
}
</script>


??
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