Avatar billede theselfimages Nybegynder
30. januar 2003 - 03:20 Der er 6 kommentarer og
1 løsning

Problem med "clearTimeout(t)" fra frame til frame

Nedenstående slideshow script har en KØR/STOP funktion som vist i bunden af scriptet. Den stopper med "clearTimeout(t)". Jeg har brug for at benytte MouseOver-menu koden(nederst i dette spørgsmål) til KØR/STOP funktionen.
Denne MouseOver-menu ligger i én frame og skal med "clearTimeout(t)" og "runSlideShow()" kører/stoppe slideshow-scriptet i en modstående frame. Hvad er problemet siden det ikke virker?

(Det skal siges at det virker fint når KØR/STOP funktionen ligger i SAMME frame/side som selve slideshow-scriptet. Men hvorfor ikke fra én frame til en anden?)

/Lars


<html>
<head>
<script language="JavaScript1.2">
// (C) 2000 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this  header
// NS4-6,IE4-6
// Fade effect only in IE; degrades gracefully

// =======================================
// set the following variables
// =======================================

// Set initial delay (milliseconds)
var initDelay = 1;

// Set slideShowSpeed (milliseconds)
var slideShowSpeed = new Array(
    2000,
    2000,
    2000,
    2000,
    2000
);

// Duration of crossfade (seconds)
var crossFadeDuration = 3

// Specify the image files
var Pic = new Array() // don't touch this
// to add more images, just continue
// the pattern, adding to the array below

Pic[0] = '1.jpg'
Pic[1] = '2.jpg'
Pic[2] = '3.jpg'
Pic[3] = '4.jpg'
Pic[4] = '5.jpg'

// =======================================
// do not edit anything below this line
// =======================================

var t
var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
  preLoad[i] = new Image()
  preLoad[i].src = Pic[i]
}

function runSlideShow(){
  if (document.all){
      document.images.SlideShow.style.filter="blendTrans(duration=2)"
      document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
      document.images.SlideShow.filters.blendTrans.Apply()     
  }
  document.images.SlideShow.src = preLoad[j].src
  if (document.all){
      document.images.SlideShow.filters.blendTrans.Play()
  }
  j = j + 1
  if (j > (p-1)) j=0
  t = setTimeout('runSlideShow()', slideShowSpeed[j])
}
</script>
</head>

<body onload="setTimeout('runSlideShow()', initDelay)">

<img border="0" src="../1.jpg" name='SlideShow' width="235" height="176">
<br>
<br>
<button onclick="clearTimeout(t)">Stop</button>
<button onclick="runSlideShow()">Kør</button>

</body>
</html>



MouseOver Menu:

<a href="#" onfocus="this.blur( )" onMouseOver="ms('img1', 'on')" onMouseOut="ms('img1', 'off')" onClick="ms('img1', 'fix');parent.content.location='clearTimeout(t)'; return false;">
    <img name="img1" src="../images/stop.gif" border="0"></a>

   
<a href="#" onfocus="this.blur( )" onMouseOver="ms('img2', 'on')" onMouseOut="ms('img2', 'off')" onClick="ms('img2', 'fix');parent.content.location='runSlideShow()'; return false;">
    <img name="img2" src="../images/play.gif" border="0"></a>
Avatar billede nikolajdu Nybegynder
30. januar 2003 - 11:11 #1
sådan her istedet??

parent.content.runSlideShow();
Avatar billede theselfimages Nybegynder
30. januar 2003 - 12:01 #2
Hmm.. nu står den skrevet sådan her:

<a href="#" onfocus="this.blur( )" onMouseOver="ms('img1', 'on')" onMouseOut="ms('img1', 'off')" onClick="ms('img1', 'fix');parent.content.clearTimeout(t); return false;">
    <img name="img1" src="../images/stop.gif" border="0"></a>

Men jeg får en IE error ('t' is undefined)
Dog ser den anden ud til at virke. Det har i hvert fald en effekt på slideshowet (syntes at kører dobbelt tempo) hvis PLAY klikkes. Så den henviser fint nok til CONTENT framen. Men altså problemer med STOP knappen.

<a href="#" onfocus="this.blur( )" onMouseOver="ms('img2', 'on')" onMouseOut="ms('img2', 'off')" onClick="ms('img2', 'fix');parent.content.runSlideShow(); return false;">
    <img name="img2" src="../images/play.gif" border="0"></a>
Avatar billede nikolajdu Nybegynder
30. januar 2003 - 12:15 #3
t er en variabel der er sat i den anden frame, så du skal også hente værdien der :)

parent.content.clearTimeout(parent.content.t);
Avatar billede theselfimages Nybegynder
30. januar 2003 - 12:33 #4
Ja.. selvfølgelig, logisk.
Tusind tak for hjælpen, det virker perfekt.
(post et svar)

Ville du evt., i forbindelse med dette spørgsmål,
ha' lyst at tage et kig her?
http://www.eksperten.dk/spm/309810
i
Avatar billede nikolajdu Nybegynder
30. januar 2003 - 14:03 #5
no problemos :))
Avatar billede theselfimages Nybegynder
30. januar 2003 - 14:07 #6
Har du nogen kommentarer til denne:
http://www.eksperten.dk/spm/309810 !?
Avatar billede nikolajdu Nybegynder
30. januar 2003 - 14:15 #7
næh ikke umiddelbart.
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel