Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按钮onclick使其他脚本停止运行_Javascript_Jquery - Fatal编程技术网

Javascript 按钮onclick使其他脚本停止运行

Javascript 按钮onclick使其他脚本停止运行,javascript,jquery,Javascript,Jquery,我有以下代码: $(function() { $("#buttonID").click( function() { // stop funcName() running }); }); $(function funcName(){ // some scripts will run on page load }); 我的问题是,当单击#buttonID时,如何停止funcName()的运行 谢谢你们 编辑:这是将在页面加载时运行的脚本:(我在谷歌上找到了

我有以下代码:

$(function() {
    $("#buttonID").click( function() {
        // stop funcName() running
    });
});

$(function funcName(){
    // some scripts will run on page load
});
我的问题是,当单击#buttonID时,如何停止funcName()的运行

谢谢你们

编辑:这是将在页面加载时运行的脚本:(我在谷歌上找到了这个脚本。这个脚本将使一个div子节点粘到它的父div上。)

我想通过点击一个按钮使这个脚本停止运行


再次感谢。

JavaScript通常是单线程的,这意味着在浏览器中执行函数时,其他代码不能同时运行,包括onclick等事件处理程序(只有在函数完成后才会触发)。因此,在这种情况下,您不能从代码中断函数的执行

有两种练习:

长时间运行的函数可能会故意中断,从而允许执行其他代码

//set this to true from an event handler to stop the execution
var cancelled = false;

function longRunningFunction() {
  if (cancelled) {
    return;
  } 

  // do some work, but not all
  // save your progress to be able to resume when called again

  if (!done) {
    // release control, so that handlers can be called, and continue in 10ms
    setTimeout(longRunningFunction, 10);
  }
}

使用。它们允许并行运行代码,但有一些限制,并非所有浏览器都支持。

事件在执行堆栈为空后立即执行。所以,您不能期望能够通过单击事件终止已经在执行堆栈中的函数。您可以做的是在事件循环中执行funcName()。例如,您可以调用函数作为requestAnimationFrame的回调函数:

 docClick = document.getElementById("buttonID").addEventListener("click",function(){
 state=false;   
});

document.body.onload= function(){
    state = true;
    animationGame = requestAnimationFrame(Myfunc);
    function Myfunc(){
        if (state){
        console.log("hi");
        animationGame = requestAnimationFrame(Myfunc);  
        }   
    }
}

在以下代码中:
-您有一个红色div
-您只有一个按钮
-在CSS中,您有一个已声明但未使用的动画
-加载页面时,将自动执行第一个JS块代码,该块代码将动画“moveRight”分配给div“player”
-动画将使播放器div向右移动一秒钟
-如果用户单击“停止动画”按钮,将执行函数stopMoving(),以停止播放器div的移动
祝你好运


#玩家{
最小宽度:80px;
最小高度:80px;
背景色:红色;
位置:绝对位置;
排名前10%;
左:0%;
}
@关键帧向右移动{
0% {
排名前10%;
左:0%;
}
20% {
排名前10%;
左:20%;
}
40% {
排名前10%;
左:40%;
}
60% {
排名前10%;
左:60%;
}
80% {
排名前10%;
左:80%;
}
100% {
排名前10%;
左:100%;
}
}
停止动画
//此代码将在页面加载时执行。
//它将给div“player”一个动画,使其向右移动
让player=document.getElementById(“player”);
player.style.animationName=“moveRight”;
player.style.animationDuration=“60s”;
player.style.animationFillMode=“forwards”;
函数stopMoving(){
//当用户单击按钮时,将执行此功能。
//此功能将阻止div向右移动
player.style.animationName=“”;
}

取决于它是什么……您所说的“停止funcName()运行”是什么意思?如果它在页面加载时运行,它将在单击按钮之前启动。脚本是执行所有同步操作,还是执行异步操作?如果它都是同步的,那么没有代码可以在函数()的中间运行,所以它总是会完成的。如果存在异步内容,您可以单击按钮设置一个变量,然后在异步处理程序回调中检查该变量,以决定是否忽略它。请提供更多详细信息,您希望实现什么,以及您迄今为止尝试了什么?@nircraft谢谢您,先生。我刚刚添加了一个脚本,我想通过单击一个按钮使其停止。你们能看一下吗?@IceMetalPunk谢谢,我刚刚编辑了我的帖子。你能看一下吗?谢谢你,先生。我不太擅长JS。但我只是添加了脚本,我想让它停止运行。请你看一下,给我一个具体的解决方案。再次感谢你。