Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 clearInterval()函数不起作用,无法找出原因。。?_Javascript_Clearinterval - Fatal编程技术网

Javascript clearInterval()函数不起作用,无法找出原因。。?

Javascript clearInterval()函数不起作用,无法找出原因。。?,javascript,clearinterval,Javascript,Clearinterval,我试图找出我的clearInterval函数不起作用的原因。在多次尝试修复后,询问堆栈溢出问题专家的建议 此外,当我按下“停止”按钮时,它实际上会加速,而不是像clearInterval那样工作。我想知道为什么 TLDR: 创建了多个随机改变颜色的正方形。 使用间隔功能设置颜色变化的速度。 但是,停止该功能不起作用,反而会加快速度 斯奎尔先生{ 显示:内联块; 宽度:30px; 高度:30px; 边框:1px黑色实心; } 按钮:悬停{ 光标:指针; } 换颜色! 住手! 功能间隔{ 常数mv

我试图找出我的clearInterval函数不起作用的原因。在多次尝试修复后,询问堆栈溢出问题专家的建议

此外,当我按下“停止”按钮时,它实际上会加速,而不是像clearInterval那样工作。我想知道为什么

TLDR: 创建了多个随机改变颜色的正方形。 使用间隔功能设置颜色变化的速度。 但是,停止该功能不起作用,反而会加快速度

斯奎尔先生{ 显示:内联块; 宽度:30px; 高度:30px; 边框:1px黑色实心; } 按钮:悬停{ 光标:指针; } 换颜色! 住手! 功能间隔{ 常数mv=设置间隔颜色变化,100; } 功能停止转换{ clearIntervalmv; } 函数颜色变化{ var cc=document.getElementsByClassName'squre'; var ccStop=document.querySelector'stop'; var i; 对于i=0;i<10;i++{ x=Math.floorMath.random*11; 如果x==1{ cc[i].style.backgroundColor='red'; }如果x==1,则为else{ cc[i].style.backgroundColor='orange'; }如果x==2,则为else{ cc[i].style.backgroundColor='yellow'; }如果x==3,则为else{ cc[i].style.backgroundColor='green'; }如果x==4,则为else{ cc[i].style.backgroundColor='blue'; }如果x==5,则为else{ cc[i].style.backgroundColor='purple'; }如果x==6,则为else{ cc[i].style.backgroundColor='grey'; }如果x==7,则为else{ cc[i].style.backgroundColor='black'; }如果x==8,则为else{ cc[i].style.backgroundColor='green'; }如果x==9,则为else{ cc[i].style.backgroundColor='white'; }如果x==10,则为else{ cc[i].style.backgroundColor='brown'; }如果x==0,则为else{ cc[i].style.backgroundColor='lightblue'; }否则{ 警告“错误”; 打破 } } } 你需要让mv全球化。否则,该变量仅为局部变量,且该值在函数范围外不可用

var mv; // global, not const

function interval() {
    mv = setInterval(colorChange, 100);
}

function stopChange() {
    clearInterval(mv);
}
你需要让mv全球化。否则,该变量仅为局部变量,且该值在函数范围外不可用

var mv; // global, not const

function interval() {
    mv = setInterval(colorChange, 100);
}

function stopChange() {
    clearInterval(mv);
}

首先,您必须在函数外部声明mv,以允许其他函数访问它 你把它设为常数 var-mv

斯奎尔先生{ 显示:内联块; 宽度:30px; 高度:30px; 边框:1px黑色实心; } 按钮:悬停{ 光标:指针; } 换颜色! 住手! var-mv; 功能间隔{ mv=设置间隔颜色变化,100; } 功能停止转换{ clearIntervalmv; } 函数颜色变化{ var cc=document.getElementsByClassName'squre'; var ccStop=document.querySelector'stop'; var i; 对于i=0;i<10;i++{ x=Math.floorMath.random*11; 如果x==1{ cc[i].style.backgroundColor='red'; }如果x==1,则为else{ cc[i].style.backgroundColor='orange'; }如果x==2,则为else{ cc[i].style.backgroundColor='yellow'; }如果x==3,则为else{ cc[i].style.backgroundColor='green'; }如果x==4,则为else{ cc[i].style.backgroundColor='blue'; }如果x==5,则为else{ cc[i].style.backgroundColor='purple'; }如果x==6,则为else{ cc[i].style.backgroundColor='grey'; }如果x==7,则为else{ cc[i].style.backgroundColor='black'; }如果x==8,则为else{ cc[i].style.backgroundColor='green'; }如果x==9,则为else{ cc[i].style.backgroundColor='white'; }如果x==10,则为else{ cc[i].style.backgroundColor='brown'; }如果x==0,则为else{ cc[i].style.backgroundColor='lightblue'; }否则{ 警告“错误”; 打破 } } }
首先,您必须在函数外部声明mv,以允许其他函数访问它 你把它设为常数 var-mv

斯奎尔先生{ 显示:内联块; 宽度:30px; 高度:30px; 边框:1px黑色实心; } 按钮:悬停{ 光标:指针; } 换颜色! 住手! var-mv; 功能间隔{ mv=设置间隔颜色变化,100; } 功能停止转换{ clearIntervalmv; } 函数颜色变化{ var cc=document.getElementsByClassName'squre'; var ccStop=document.querySelector'stop'; var i; 对于i=0;i<10;i++{ x=Math.floorMath.random*11; 如果x==1{ cc[i].style.backgroundColor='red'; }否则 如果x==1{ cc[i].style.backgroundColor='orange'; }如果x==2,则为else{ cc[i].style.backgroundColor='yellow'; }如果x==3,则为else{ cc[i].style.backgroundColor='green'; }如果x==4,则为else{ cc[i].style.backgroundColor='blue'; }如果x==5,则为else{ cc[i].style.backgroundColor='purple'; }如果x==6,则为else{ cc[i].style.backgroundColor='grey'; }如果x==7,则为else{ cc[i].style.backgroundColor='black'; }如果x==8,则为else{ cc[i].style.backgroundColor='green'; }如果x==9,则为else{ cc[i].style.backgroundColor='white'; }如果x==10,则为else{ cc[i].style.backgroundColor='brown'; }如果x==0,则为else{ cc[i].style.backgroundColor='lightblue'; }否则{ 警告“错误”; 打破 } } }
您可以使用封装或函数参数,而不是依赖全局变量。在OOP中,mv将生活在一个类中,start/stop将是方法。对于函数式编程,只需传入stopChange应作用的间隔mv,而不是依赖于别处定义的变量:例如stopChangemv;您可以使用封装或函数参数,而不是依赖全局变量。在OOP中,mv将生活在一个类中,start/stop将是方法。对于函数式编程,只需传入stopChange应作用的间隔mv,而不是依赖于别处定义的变量:例如stopChangemv;