Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 不同对象的方法不能同时执行(D3.js)_Javascript_Sorting_D3.js - Fatal编程技术网

Javascript 不同对象的方法不能同时执行(D3.js)

Javascript 不同对象的方法不能同时执行(D3.js),javascript,sorting,d3.js,Javascript,Sorting,D3.js,javascript新手,我正在试验d3.js。我想创建一个网站,直观地比较不同的排序算法。基本上,我修改了排序算法,使其具有“displayArray”(一个二维数组,是排序算法循环每次迭代的快照)。然后我遍历这个循环,在每次迭代的d3中创建一个条形图,结果与著名的图相似。但是,我无法同时运行动画功能。看起来,如果两个动画同时进行,它们会发生在同一个div中,与它们各自的指定容器对应。我已经用a完成了这项工作,但是我尝试只使用D3来制作动画。感谢您的帮助和建议。谢谢大家! var w=100

javascript新手,我正在试验d3.js。我想创建一个网站,直观地比较不同的排序算法。基本上,我修改了排序算法,使其具有“displayArray”(一个二维数组,是排序算法循环每次迭代的快照)。然后我遍历这个循环,在每次迭代的d3中创建一个条形图,结果与著名的图相似。但是,我无法同时运行动画功能。看起来,如果两个动画同时进行,它们会发生在同一个div中,与它们各自的指定容器对应。我已经用a完成了这项工作,但是我尝试只使用D3来制作动画。感谢您的帮助和建议。谢谢大家!

var w=100;
var h=100;
var=0.2;
函数graphObject(容器、数据组件、算法){
_这个=这个;
this.container=容器;
this.createDataSet=函数(){
var-arry=[];
对于(变量i=0;i<50;i++){
arry[i]=i+1;
}
如果(dataComp=='random'){
洗牌(arry);
回程
}否则如果(dataComp=='reverse'){
arry.reverse();
回程
}
};
this.dataSet=this.createDataSet();
this.createInitalGraph=函数(){
_这个=这个;
var svg=d3.select(容器)
.append('svg')
.attr('宽度',w+''%”)
.attr('height',h+'%');
svg.selectAll('rect')
.data(此.dataSet)
.输入()
.append('rect')
.attr('x',函数(d,i){
返回(i*(w/_this.dataSet.length))+'%;
})
.attr('y',函数(d){
返回h-d*(100/_this.dataSet.length)+'%';
})
.attr('width',(w/_this.dataSet.length-barPadding)+'%'))
.attr(高度),功能(d){
返回d*(100/_this.dataSet.length)+'%';
})
.attr('填充',函数(d){
返回“#ffffff”;
});
svg.exit().remove();
};
this.animate=函数(){
_这个=这个
frameArray=[];
如果(算法=='bubbleSort'){
frameArray=bubbleSort(this.dataSet);
}else if(算法=='selectionSort'){
frameArray=selectionSort(this.dataSet);
}else if(算法=='cocktailSort'){
frameArray=cocktailSort(this.dataSet);
}
对于(var j=1;j项目[i+1]){
温度=项目[i];
项目[i]=项目[i+1];
项目[i+1]=温度;
交换=真;
}
}
}while(交换);
返回显示数组;
}
功能选择排序(项目){
var len=items.length,
闵,
临时雇员
displayArray=[];
对于(i=0;i=0;i--){
displayArray.push(items.slice());
if(项目[i]>项目[i+1]){
温度=项目[i];
项目[i]=项目[i+1];
项目[i+1]=温度;
交换=真;
}
}
}while(交换);
返回显示数组;
}
函数洗牌(数组){
var currentIndex=array.length,
时间值,随机指数;
而(0!==currentIndex){
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
}
var graph1=新的graphObject('.graphContainer1','random','bubbleSort');
var graph2=新的graphObject('.graphContainer2','random','selectionSort');
var graph3=新的graphObject('.graphContainer3','random','cocktailSort');
graph1.createInitalGraph();
graph2.createInitalGraph();
graph3.createInitalGraph();
$(“.BubbleSort”)。单击(函数(){
graph1.animate();
});
$(“.SelectionSort”)。单击(函数(){
graph2.animate();
console.log(graph1.container);
});
$(“.CocktailSort”)。单击(函数(){
图形3.设置动画();
});
html{
背景:黑色;
}
p{
颜色:白色;
}
.图表{
宽度:300px;
}

冒泡排序冒泡排序
选择排序
鸡尾酒类
气泡排序

选择排序

鸡尾酒类


问题在于您的
\u此
帧数组<