我有一个问题,我有 3 个按钮,可以说它被称为#pos1、#pos2 和 #pos3。我想让它在 2 秒内自动单击 #pos1 按钮,然后在 2 秒后单击 #pos2 ,再在 2 秒后单击 #pos3 ,然后再在 2 秒内 返回到 #pos1 ,依此类推。
HTML
<button id="pos1">Pos1</button>
<button id="pos2">Pos2</button>
<button id="pos3">Pos3</button>
任何人都可以帮助我吗?
我有一个问题,我有 3 个按钮,可以说它被称为#pos1、#pos2 和 #pos3。我想让它在 2 秒内自动单击 #pos1 按钮,然后在 2 秒后单击 #pos2 ,再在 2 秒后单击 #pos3 ,然后再在 2 秒内 返回到 #pos1 ,依此类推。
HTML
<button id="pos1">Pos1</button>
<button id="pos2">Pos2</button>
<button id="pos3">Pos3</button>
任何人都可以帮助我吗?
尝试
$(function() {
var timeout;
var count = $('button[id^=pos]').length;
$('button[id^=pos]').click(function() {
var $this = $(this);
var id = $this.attr('id');
var next = parseInt(id.substring(4), 10) + 1;
if( next >= count ){
next = 1
}
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function() {
$('#pos' + next).trigger('click');
}, 2000);
})
timeout = setTimeout(function() {
$('#pos1').trigger('click');
}, 2000);
})
如果我理解你的问题是正确的,你需要按pos1>pos2>pos3>pos1>pos2等顺序连续循环执行单击。如果这是你想要的,你可以使用 jQuery window.setTimeout
。代码将是这样的:
window.setTimeout(performClick, 2000);
var nextClick = 1;
function performClick() {
if(nextClick == 1)
{
$("#pos1").trigger("click");
nextClick = 2;
}
else if(nextClick==2)
{
$("#pos2").trigger("click");
nextClick = 3;
}
else if(nextClick == 3)
{
$("#pos3").trigger("click");
nextClick = 1;
}
window.setTimeout(performClick, 2000);
}
这是相当多的错误,但会解决你的问题。
好吧,我不知道您已经拥有什么,但从技术上讲,它可以通过 triggerHandler() 完成
var currentPos = 1,
posCount = 3;
autoclick = function() {
$('#pos'+currentPos).triggerHandler('click');
currentPos++;
if(currentPos > posCount) { currentPos = 1; }
};
window.setInterval(autoclick,2000);
重复调用函数或执行代码片段,每次调用该函数之间有固定的时间延迟。
var tempArray = ["pos1", "pos2", "pos3"]; //create an array to loop through
var arrayCounter = 0;
setInterval(function() {
$('#' + tempArray[arrayCounter ]).trigger('click');
arrayCounter = arrayCounter <2 ? arrayCounter +1 : 0;
}, 2000);
检查您的控制台以获取小提琴示例
var posArray = ["#pos1", "#pos2", "#pos3"];
var counter = 0;
setInterval(function() {
$(posArray[counter]).triggerHandler('click');
counter = ((counter<2) ? counter+1 : 0);
}, 2000);
这应该可以解决问题,尽管您没有提及何时希望它停止运行。