Volledige versie bekijken : for loop wil actie maar 1 keer uitvoeren
latino
%Europe/Berlin %508 %2005, 13:12
Hallo door een home knop wil ik twee paginas sluiten dmv javascript. Nu hij pakt alleen de laatset uit de array namelijk, forum2. Weet iemand wat ik fout doe?
var pagesNames:Array = ["news2","forum2"];
var numberOfPages:Number = pagesNames.length;
home_mc.onRelease = function(){
closeContent();
}
function closeContent(){
for(i=0; i<numberOfPages;i++){
getURL("javascript:closeContent(\'" + pagesNames[i] + "\')");
trace(i);
}
}
theFlashWizard
%Europe/Berlin %568 %2005, 14:38
probeer is:
for(i=0; i<=numberOfPages;i++){
latino
%Europe/Berlin %594 %2005, 15:16
dan doet ie helemaal niks..hij traced wel 0,1,2 (hij pakt dus de laatste: oftewel 2 en die index zit niet in de array)
of kun je javascript niet meermalen aanroepen vanuit flash?
mateo)
%Europe/Berlin %095 %2005, 03:17
ik zou zelf het probleem verleggen naar javascript. dus de call wordt:
getURL("javascript:closeContent(\"news2\", \"forum2\")");
en dan kan je met je javascript functie alle windows sluiten die je maar wilt.
latino
%Europe/Berlin %337 %2005, 09:05
hmm zit wat in, maar ik gebruik deze javascript:
function closeContent(name) {
//alert('closeContent called')
var e = this.document.getElementById(name)
if (e) {
e.style.display = 'none'
}
removeChildren(e)
}
iemand anders nog ideen?
Laiverd
%Europe/Berlin %419 %2005, 11:04
Ik zou het zelf eens met setInterval proberen; kan zijn dat zo'n for loop gewoon te snel verloopt om alle javascript calls uit te voeren.
Het zou dan iets worden als:
function closeContent() {
// interval clearen als ie runt
clearinterVal(closeWin);
// lengte van het interval in seconden
p = 0.1;
// initialiseer de teller
i = 0;
// interval starten
closeWin = setInterval(function () {
getURL("javascript:closeContent(\'" + pagesNames[i] + "\')");
// teller verhogen
i++;
// check of alles al gesloten is en dan interval clearen
if (i > pagesNames.length - 1) {
clearInterval(closeWin);
}
}, p * 1000);
}John
mateo)
%Europe/Berlin %455 %2005, 11:56
dit is ook een methode:
actionscript:
// var pageNames:Array = ["news2", "forum2"];
var pageNames:String = "news2,forum2";
home_mc.onRelease = closeContent;
function closeContent():Void{
getURL("javascript:closeContent(\'" + pageNames + "\')");
}
javascript:
function closeContent(strArr){
var e, name;
var arr = strArr.split(",");
for(var i = 0; i < arr.length; i++){
name = arr[i];
e = this.document.getElementById(name)
if (e) {
e.style.display = 'none'
}
removeChildren(e)
}
}
(pageNames als array werkt ook, maar zoals nu gebruikt beter string van maken. bij verzenden via getURL wordt het array automatisch naar een string omgezet)
latino
%Europe/Berlin %491 %2005, 12:48
verrek dat werkt als een trein!
maar kun je ook van:
var pageNames:String = "news2,forum2";
een array maken?
Laiverd
%Europe/Berlin %531 %2005, 13:46
String.split(delimiter) > as dictionary
mateo)
%Europe/Berlin %578 %2005, 14:53
dat kan. zoals ik schreef:
bij verzenden via getURL wordt het array automatisch naar een string omgezet
zoals laiverd het voorstelt is het netter. je moet trouwens wel een join gebruiken i.p.v. een split.
dus, quick and dirty:
var pageNames:Array = ["news2", "forum2"];
// var pageNames:String = "news2,forum2";
of netjes:
var arrayPageNames:Array = ["news2", "forum2"];
var pageNames = arrayPageNames.join(",");
(in beide gevallen kan de rest van de code gewoon blijven staan)
latino
%Europe/Berlin %858 %2005, 21:36
hee bedankt! :)
latino
%Europe/Berlin %376 %2005, 10:02
je kun took toString() gebruiken
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.