Javascript jQuery按时间间隔单击单个元素

Javascript jQuery按时间间隔单击单个元素,javascript,jquery,Javascript,Jquery,我正在使用JQVMap在页面上呈现世界地图。我需要在特定序列中每隔10秒自动单击一个单独的地图区域。以下是我迄今为止的javascript: //get each region in the sequence var asiaID = document.getElementById('jqvmap1_cn'); //China var americaID = document.getElementById('jqvmap1_ar'); //Argentina var africaID = doc

我正在使用JQVMap在页面上呈现世界地图。我需要在特定序列中每隔10秒自动单击一个单独的地图区域。以下是我迄今为止的javascript:

//get each region in the sequence
var asiaID = document.getElementById('jqvmap1_cn'); //China
var americaID = document.getElementById('jqvmap1_ar'); //Argentina
var africaID = document.getElementById('jqvmap1_et'); //Ethiopia
var europeID = document.getElementById('jqvmap1_ru'); //Russia
var eastID = document.getElementById('jqvmap1_pk'); //Pakistan

var regionArray = [asiaID, americaID, africaID, europeID, eastID];
var arrayLength = regionArray.length;

//trigger sequence on time interval
setInterval(autoCycle, 10000);

//cycle through each region with click
function autoCycle(){
    //loop through each region
    for (var i = 0; i < arrayLength; i++) {
        jQuery(regionArray[i]).trigger('click');
        console.log(regionArray[i]);
    }
}
//获取序列中的每个区域
var asiaID=document.getElementById('jqvmap1_cn')//中国
var-americaID=document.getElementById('jqvmap1_-ar')//阿根廷
var africaID=document.getElementById('jqvmap1_et')//埃塞俄比亚
var europeID=document.getElementById('jqvmap1_-ru')//俄罗斯
var eastID=document.getElementById('jqvmap1_pk')//巴基斯坦
var regionArray=[Asaid,americaID,africaID,europeID,eastID];
var arrayLength=区域阵列长度;
//时间间隔上的触发序列
设定间隔(摩托车,10000);
//单击以循环浏览每个区域
功能摩托车(){
//循环通过每个区域
对于(变量i=0;i

使用此代码,regionArray中的所有区域每10秒同时单击一次。如果有意义的话,我需要按顺序逐个单击它们。for()循环对此不起作用吗?

您可以使用以下逻辑:

var i = 0;
setInterval(function(){autoCycle(i++%arrayLength)}, 10000);

//cycle through each region with click
function autoCycle(i) {
    jQuery(regionArray[i]).trigger('click');   
}

您可以使用以下逻辑:

var i = 0;
setInterval(function(){autoCycle(i++%arrayLength)}, 10000);

//cycle through each region with click
function autoCycle(i) {
    jQuery(regionArray[i]).trigger('click');   
}
1) 如果使用jquery,则不需要getElementByID 2) 您可以使用setTimeout和递归

var regionArray = ['#jqvmap1_cn', '#jqvmap1_ar', '#jqvmap1_et', '#jqvmap1_ru', '#jqvmap1_pk'];
    var arrayLength = regionArray.length;

    function autoCycle(i) {
      if (i < arrayLength) {
        jQuery(regionArray[i]).trigger('click');
        setTimeout(function(){autoCycle(++i);}, 10000);
      }
    }

    autoCycle(0);
var regionArray=[“#jqvmap1_cn”,“#jqvmap1_ar”,“#jqvmap1_et”,“#jqvmap1_ru”,“#jqvmap1_pk”];
var arrayLength=区域阵列长度;
多功能摩托车(一){
如果(i<排列长度){
jQuery(regionArray[i]).trigger('click');
setTimeout(function(){autoCycle(++i);},10000);
}
}
摩托车(0);
1)如果使用jquery,则不需要getElementByID 2) 您可以使用setTimeout和递归

var regionArray = ['#jqvmap1_cn', '#jqvmap1_ar', '#jqvmap1_et', '#jqvmap1_ru', '#jqvmap1_pk'];
    var arrayLength = regionArray.length;

    function autoCycle(i) {
      if (i < arrayLength) {
        jQuery(regionArray[i]).trigger('click');
        setTimeout(function(){autoCycle(++i);}, 10000);
      }
    }

    autoCycle(0);
var regionArray=[“#jqvmap1_cn”,“#jqvmap1_ar”,“#jqvmap1_et”,“#jqvmap1_ru”,“#jqvmap1_pk”];
var arrayLength=区域阵列长度;
多功能摩托车(一){
如果(i<排列长度){
jQuery(regionArray[i]).trigger('click');
setTimeout(function(){autoCycle(++i);},10000);
}
}
摩托车(0);

您需要在每个延迟之后添加一个延迟,而不是在10000处单击所有延迟ms@bruchowski根据您的建议,我是否需要将setInterval函数更改为50000(在5个区域中循环的总时间),然后将每个区域后的延迟设置为10000?你介意提供一个例子来帮助我理解吗?你需要在每一个延迟之后添加一个延迟,而不是在10000处全部单击它们ms@bruchowski根据您的建议,我是否需要将setInterval函数更改为50000(在5个区域中循环的总时间),然后将每个区域后的延迟设置为10000?你介意提供一个例子来帮助我理解吗?谢谢,这有助于清理我的代码很多。我仍然不太熟悉所有很酷的jQuery语法。答案中的完整代码仅在我看到的情况下每隔10秒单击数组中的第一个元素。@JesseDillman查看更新的代码。问题出在i++(详细信息)谢谢,这有助于清理我的代码很多。我仍然不太熟悉所有很酷的jQuery语法。答案中的完整代码仅在我看到的情况下每隔10秒单击数组中的第一个元素。@JesseDillman查看更新的代码。问题出在i++(详细信息)中,它运行得非常好!虽然我不熟悉您使用的一些语法。我将确保仔细阅读jQuery文档。非常好。我也在学习!简单而优雅。这个问题已经回答了,我将删除我的无效答案。谢谢这一切都很顺利!虽然我不熟悉您使用的一些语法。我将确保仔细阅读jQuery文档。非常好。我也在学习!简单而优雅。这个问题已经回答了,我将删除我的无效答案。谢谢