javascript - 无法弄清楚 setInterval() 的工作原理
问题描述
我必须按升序对一堆垂直条进行排序。所以我已经很好地编码了这部分,但是当我尝试为条形着色时出现问题。我生成了一个随机条形列表
所以程序采用前两个条并将它们着色为“红色”,然后交换它们,然后颜色恢复为“绿色”。这一直持续到所有内容都按升序排序。但我面临的问题是,在所有内容都排序后,前两个条的颜色不断从绿色变为红色。即使在 setInterval() 函数停止后,前两个条的颜色也会不断变化。
下面是在 javascript 中实现这些功能的代码
//Function to sort
reset();
$(".btn").click(function bubbleSort(){
let flag=0;
for(let i=0;i<values.length-1;i++){
flag=0;
for(let j=0;j<values.length-1-i;j++){
var main=setInterval(function swap(){
if(values[j]>values[j+1]){
let temp=values[j];
values[j]=values[j+1];
values[j+1]=temp;
flag=1;
if(j==0){
$(".line1").css({"background-color":"red"});
$(".line2").css({"background-color":"red"});
setTimeout(function(){
$(".line1").css({"height":values[j],"background-color":"#357d35"});
$(".line2").css({"height":values[j+1],"background-color":"#357d35"});
},500);
}
else if(j==1){
$(".line2").css({"background-color":"red"});
$(".line3").css({"background-color":"red"});
setTimeout(function(){
$(".line2").css({"height":values[j],"background-color":"#357d35"});
$(".line3").css({"height":values[j+1],"background-color":"#357d35"});
},500);
}
else if(j==2){
$(".line3").css({"background-color":"red"});
$(".line4").css({"background-color":"red"});
setTimeout(function(){
$(".line3").css({"height":values[j],"background-color":"#357d35"});
$(".line4").css({"height":values[j+1],"background-color":"#357d35"});
},500);
}
}//end of if statement
else{
if(j==0){
$(".line1").css({"background-color":"red"});
$(".line2").css({"background-color":"red"});
setTimeout(function(){
$(".line1").css({"background-color":"#357d35"});
$(".line2").css({"background-color":"#357d35"});
},500);
}
} //end of else statement
setTimeout(function(){
clearInterval(main);
},5000);
},550*(j+3));
}//end of 'j' loop
if(flag==0)
break;
}//end of 'i' loop
});
我尝试了各种更改,但不知何故我无法阻止前两个条在红色和绿色之间连续闪烁。
解决方案
推荐阅读
- mongodb - 使用 $unwind 和排序的 MongoDB 分页
- jquery - 如何使用 AJAX 数据和变量在同一页面上呈现多个 Chart.JS 图表
- mongodb - 修剪来自logstash的所有字符串字段 - jdbc输入
- reactjs - 解析错误:意外的令牌,预期的“;
- java - 来自 Tomcat Azure 的文件上传限制异常
- sapui5 - smarttable(ui.table)不请求所有数据
- ruby-on-rails - 如何修复 Rails 应用程序中的“无效查询参数”错误?
- date - 从 liferay 发送到 solr 的 ddm-date 未解析为日期
- c# - 这个压缩算法是什么?
- csv - 如何使用 AWS DMS 将数字从 CSV 文件迁移到 Redshift?