【问题标题】:Javascript: how to loop through an array upon each callJavascript:如何在每次调用时遍历数组
【发布时间】:2012-08-05 03:26:18
【问题描述】:

我正在尝试创建一个函数,该函数在每次调用时都会选择数组中的下一个变量。

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,第二次使用 def,第三次使用 ghi。

【问题讨论】:

  • 你真的是说ifelse if中只有一个=吗??
  • 虽然已经提供的任何一种方法都可以正常工作,如果您不需要维护 nexttest 数组,您可以在每次调用函数时弹出值。 stackoverflow.com/questions/1590247/…

标签: jquery arrays function


【解决方案1】:

您将创建一个变量来跟踪数组的索引:

var index = 0;

然后,在函数中,您可以使用index 变量选择要与之交互的数组元素:

var interactWithThis = nexttest[index];

然后每次调用函数时递增索引:

index++;

【讨论】:

    【解决方案2】:

    我会做得更像

    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();
    

    【讨论】:

    • 基思,感谢您的建议。你知道我会如何从 iframe 调用这个函数吗?我一直在尝试 parent.testing.nexttest() 和 window.parent.testing.nexttest() 但都没有工作。
    • 没关系。 parent.testing.nexttest() 工作正常,只是协议的不同把它搞砸了,因为我正在使用 SSL 查看我的网站并使用 http:// 加载 iframe ......哦,现在想通了(浪费时间完成。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多