Jag har en array som jag skickar till en funktion. Den funktionen ska byta bild i en annan frame med fint tidsintervall. Min funktion fungerar dock inte, hur ska jag skriva den?
Funktionen:
<SCRIPT Language="Javascript">
function bildspel(arrBildID){
for (var i=0; i < arrBildID.length; i++) {
setTimeout("parent.body.location.replace("foto.asp?sida=body&BildID=" + arrBildID[i] + "")",1000);
}
}
</SCRIPT>
Koden som fixar arrayen och som anroppar funktionen:
response.write "<script language=""javascript"">"
response.write "var bildid = new Array(); "
response.write "var i ; i = 0;"
While not RecSet.eof
response.write "bildid[i++] = " & RecSet("bildid") & ";"
RecSet.movenext
WEnd
response.write "</script>"
Response.Write "<A HREF=""javascript:bildspel(bildid)"" target=""body"">Starta</A><br>"
RecSet.MoveFirst
Använder jag mig av rätt metod? eller har någon något annat förslag? tack!
eftersom marsvinet inte tycker att denna frågan ska diskuteras i asp-forumet hoppas jag att någon här inne kan svara på frågan. Jag tror att felet är på denna raden:
Jag tror inte det är fel på citationstecknen, utan på skriptet i sig och hur det anropas.
Man kan bla. inte loopa en settimeout som du vill göra i din funktion.
Prova detta
<script language="javascript">
function initBild(vilkenArray){
i = 0;
arrBildID = vilkenArray;
bildspel();
}
function bildspel(){
if(i < arrBildID.length){
setTimeout("parent.body.location.href='foto.asp?sida=body&BildID=" + arrBildID[i] + "'; bildspel();",1000);
i++;
}
}
</script>
<script language="javascript">
var bildid = new Array();
var i ;
i = 0;
bildid[i++] = 4177;
bildid[i++] = 4178;
bildid[i++] = 4179;
bildid[i++] = 4180;
</script>
<a href="javascript:initBild(bildid)">Starta(2)</a>
jag hade inte testat själva funktionerna så mycket då jag inte lyckats att anropa dem med en korrect array innan. De funktionerna du skrev funkar bra! detta är min kod för att skapa arrayen och anropa funktionerna:
response.write "<script language=""javascript"">"
response.write "var bildid = new Array(); "
i = 0
While not RecSet.eof
response.write "bildid[" & i & "] = " & RecSet("bildid") & ";"
i = i + 1
RecSet.movenext
Wend
response.write "</script>"
%>
<a href="javascript:initBild(bildid)">Starta</a><br>
<A HREF="javascript:initBild()">Stoppa</A>
Har bara några frågor kvar nu:
1. Det blir ju en fördröjning innan första bilden visas, kan man ta sig runt det på något sätt?
2. Sen vill jag även att man ska kunna stoppa det hela. Jag testade genom att anropa funktionen utan array. Då fick jag ett felmedelande på sidan, så visas en bild i bildspelet till (setTimeout håller väll på med den) och sen stannar det. Finns det något sätt att få det att stanna direkt?
(3. Funderar på att göra tiden som indata till funktionen, så att en användare kan välja hur fort bildspelet ska gå... funkar det?)
TACK till alla som hjälp mig så här långt! kanonbra har ni varit! :)