2012-08-08 46 views
1

我試圖創建一個函數,在每次調用時它會選擇數組中的下一個變量。Javascript:如何在每次調用時循環遍歷數組

var nexttest=['abc','def','ghi']; 
function nexttest() { 
if (nexttest = 'abc') { 
    $('#result').load('url1.html'); 
} 
else if (nexttest = 'def') { 
    $('#result').load('url2.html'); 
} 
else { 
    $('#result').load('url3.html'); 
} 
} 

有沒有辦法讓nexttest()第一次使用abc,第二次使用abc,第三次使用ghi。

+0

你真的是隻有一個'='在'if'和'其他if'? – elclanrs 2012-08-08 03:53:48

+0

雖然如果您不需要維護下一個測試數組,那麼您已經提供的任何一種方法都可以正常工作,您可以在每次調用函數時彈出數值。 http://stackoverflow.com/questions/1590247/how-do-you-implement-a-stack-and-a-queue-in-javascript – Carth 2012-08-08 04:05:55

回答

1

我願意做它更像

var tester = function(){ 
    var i = 0; 
    var tests = ['abc','def','ghi']; 
    this.nexttest = function() { 
     if (tests[i] == 'abc') {$('#result').load('url1.html');} 
     else if (tests[i] == 'def') {$('#result').load('url2.html'); } 
     else { $('#result').load('url3.html');}   
     i++; 
    }; 
} 

var testing = new tester(); 

testing.nexttest(); 
testing.nexttest(); 
testing.nexttest(); 
testing.nexttest(); 

+0

Keith,謝謝你的建議。你知道我如何從iframe調用這個函數嗎?我一直在嘗試parent.testing.nexttest()和window.parent.testing.nexttest(),但都沒有工作。 – Devon 2012-08-08 05:38:26

+1

沒關係。 parent.testing.nexttest()工作正常,它只是在協議的差異搞亂它,因爲我正在查看我的網站與SSL和加載與http://...oh iframe,現在想通了(浪費時間完成)。 – Devon 2012-08-08 05:48:17

3

您將創建跟蹤數組的索引的變量:

var index = 0; 

然後,在功能,你可以選擇要使用的index變量相互作用的數組元素:

var interactWithThis = nexttest[index]; 

,然後將每個函數被調用時增加索引:

index++; 
+1

+1對我來說似乎很合理 – Icarus 2012-08-08 03:51:26