【问题标题】:Cycle forward and backward through two arrays in jQuery通过jQuery中的两个数组向前和向后循环
【发布时间】:2012-12-06 16:47:28
【问题描述】:

此脚本用于切换两个独立 iframe 中的内容。每个都有自己的特定内容,确实需要同步。我最初创建它只是为了在任何 keyup 触发器上循环前进。它工作得很好。然后我被要求在“返回”按钮事件上向后循环。

它循环,但现在在后向循环中,iframe 中的内容不同步,并且循环不是迭代的,而是看似随机的,具体取决于您在前向循环中的位置,在 iFrame 之间跳转。

代码在前向循环中工作,我不想破坏它。

    <script>
  $(document).ready(function(){
    var locations = ["Assets/Assets0.html", "Assets/Assets1.html", "Assets/Assets2.html", "Assets/Assets3.html"];
    var details = ["Details1/Details0.html", "Details1/Details1.html", "Details1/Details2.html", "Details1/Details3.html"];
    var len = locations.length;
    var len2 = details.length;
    var iframe = $('#Results');
    var iframe2 = $('#Description');
    var i = 0;
    $(document.documentElement).keyup(function (event) {
        // handle delete key
        if (event.keyCode == 8) {
            $(iframe).attr('src', locations[--i % len]);
            $(iframe2).attr('src', details[-i % len2]);

        // all other keys
        } else  {
            $(iframe).attr('src', locations[++i % len]);
            $(iframe2).attr('src', details[+i % len2]);
          }
        });

  });
</script>

【问题讨论】:

  • 好的,得到了​​答案:数组保持不变,自己拉出变量,使用开关功能。 $(document.documentElement).keyup(function (e) { switch (e.keyCode) { case 8: // delete if (i &gt; 0) { i--; } else { i = locations.length - 1; } break; default: if (i &lt; locations.length - 1) { i++; } else { i = 0; } break; } $('#Results').attr('src', locations[i]); $('#Description').attr('src', details[i]);

标签: jquery arrays iframe cycle


【解决方案1】:

负数取模有点奇怪……试试看吧:

例如,您希望 -1 % 3 给您 3(最后一个元素),而实际上它是 2。

我的建议是在“返回”代码周围放置一个if,以应对i == 0。

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多