Javascript 如何在没有用户交互的情况下自动触发

Javascript 如何在没有用户交互的情况下自动触发,javascript,jquery,Javascript,Jquery,我试图使用(#td.trigger('click')自动触发td元素。这是可行的,但我不希望用户自己实际点击td,我只希望它是自动化的。我需要触发td元素来启动下一个事件。如何使用JQuery或JS触发元素而不让用户触发该元素。这就是我现在拥有的 $(td4).trigger('click'); //will trigger td4 which eventually will trigger td5 $(td5).trigger('click'); //which will go on to t

我试图使用(#td.trigger('click')自动触发td元素。这是可行的,但我不希望用户自己实际点击td,我只希望它是自动化的。我需要触发td元素来启动下一个事件。如何使用JQuery或JS触发元素而不让用户触发该元素。这就是我现在拥有的

$(td4).trigger('click');
//will trigger td4 which eventually will trigger td5
$(td5).trigger('click');
//which will go on to td6 and so on

正如我之前所说,它是有效的。然而,用户可以绕过这些方法直接进入td20,例如,只需单击它。我希望他们通过一个自动化流程,在这个流程中,他们必须按照指定的顺序完成所有td。任何帮助都将不胜感激

编写一个函数来处理逻辑,并通过$(document).ready(yourFn())调用它

使用jQuery以td为目标,然后让它迭代它们并调用每个绑定事件处理程序的想法是正确的吗?如果没有,请进一步澄清

下面的东西。您可以根据需要用事件类型替换触发器参数、模糊、单击等:

    <table>
  <tr>
    <td onclick="myFnA()">R1C1</td>
    <td onclick="myFnB()">R1C2</td>
    <td onclick="myFnC()">R1C3</td>
  </tr>
  <tr>
    <td onclick="myFnA()">R2C1</td>
    <td onclick="myFnB()">R2C2</td>
    <td onclick="myFnC()">R2C3</td>
  </tr>
</table>


const myFnA = () => console.log('myFnA');
const myFnB = () => console.log('myFnB');
const myFnC = () => console.log('myFnC');
const triggerTds = () => {
   $('td').trigger('click', 'blur');
};
$(document).ready(triggerTds());

R1C1
R1C2
R1C3
R2C1
R2C2
R2C3
constmyfna=()=>console.log('myFnA');
constmyfnb=()=>console.log('myFnB');
constmyfnc=()=>console.log('myFnC');
常量触发器TDS=()=>{
$('td')。触发器('click','blur');
};
$(document).ready(triggerTds());

首先,如果您根本不希望用户单击tds,那么我看不出让click处理程序和触发onclick遍历脚本有任何意义

但是,既然你问了,下面是一种区分实际用户点击和通过代码触发的点击的方法

您可以使用event.originalEvent.isTrusted标志检查用户是否单击了tds并相应地处理它,这里有一支笔用于演示

$(“tr>td”)。单击(功能(e){
如果(e.originalEvent和e.originalEvent.isTrusted){
log(“用户点击捕获:+e.originalEvent.isTrusted”);
e、 预防默认值();
}否则{
log(“自动单击”+$(this.attr(“id”));
$(this).next().trigger(“click”);//单击下一个td
//现在触发下一次td点击
//在这里做你的事
}
});
var autoClick=函数(){
$(“#td1”)。触发器(“单击”);
}
td{
宽度:30px;
高度:30px;
边框:1px实心;
}

td1
td2
td3

单击代码中的Div
我已经在使用一个函数,但每个td都有自己的函数。该函数调用下一个函数我只是指在.ready fn中调用fn,以便在ready/自动执行。除此之外,您可以让fn调用在tds上设置的每个绑定事件处理程序。查看.trigger的jQuery api,使所有目标元素都具有要调用的事件处理程序。抱歉,缺少代码/示例,在手机上键入代码没有乐趣@为了澄清我最初的答案是什么意思,请检查我扔在一起的代码笔。你能再澄清一点吗:你希望用户点击一个TD将点击事件附加到下一个TD,还是希望在每个连续TD上发生一连串事件,而用户不必点击其中任何一个?我不希望用户点击任何东西。当你说“触发TD元素”时,你的意思是以某种方式将其动画化?滚动到它?当我确定点击来自用户时,如何防止点击发生?检查如果条件,我检测到用户点击并使用e.preventDefault停止进一步执行。自动点击的逻辑应该在else块中。我们不能阻止用户点击td,我们只能让他们点击并抑制代码作为结果执行。无论如何,我可以避免全部点击。你说的完全避免是什么意思?。如果您根本不希望用户单击TDs,则不要在其上注册onclick事件处理程序。由于您希望使触发器(“单击”)工作,而不是用户单击,因此我只能想到上面的解决方案