Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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 我的html代码中是否有任何错误。它没有像预期的那样生成条形图_Javascript_Html_Html5 Canvas - Fatal编程技术网

Javascript 我的html代码中是否有任何错误。它没有像预期的那样生成条形图

Javascript 我的html代码中是否有任何错误。它没有像预期的那样生成条形图,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,这里是我的html代码,当我将它声明为单个数据时,它可以正常工作。但当我把它声明为二维数组时。它不起作用。有什么问题吗。有人能帮我吗。下面是带有bug的代码 <!doctype html> <html> <head> <script type="text/javascript"> window.onload=function() { var ca

这里是我的html代码,当我将它声明为单个数据时,它可以正常工作。但当我把它声明为二维数组时。它不起作用。有什么问题吗。有人能帮我吗。下面是带有bug的代码

<!doctype html>
<html>
    <head>
        <script type="text/javascript">
            window.onload=function()
            {
                var canvas=document.getElementById('mycanvas');
                var ctx=canvas.getContext('2d');
                var value=[[10,30,40,60,80],[10,20,30,40,50,90]];
                var width=50;
                var currx=30;

                var i = 0, j;
                for(j=0;j<=1;j++)
                {
                var interval = setInterval(function(){

                    if (i == value[j].length)
                    {
                        clearInterval(interval);
                        return;
                    }
                    var h=value[j][i];
                    ctx.fillStyle="grey";
                    ctx.fillRect(currx+2,canvas.height-h+1,width+2,h+2);
                    ctx.fillStyle="red";
                    ctx.fillRect(currx,canvas.height-h,width,h);                    
                    currx+=60;  
                    i++;
                }, 2000);
                }

            };
        </script>
    </head>
    <body>
        <canvas id="mycanvas" height="400" width="400" style="border:1px solid #c3c3c3;">
    </body>
</html>

window.onload=function()
{
var canvas=document.getElementById('mycanvas');
var ctx=canvas.getContext('2d');
var值=[[10,30,40,60,80],[10,20,30,40,50,90];
var宽度=50;
var currx=30;
var i=0,j;

代码中的for(j=0;j错误
value[j]未定义
,因为
j
变量在
for
循环结束后求值为value
3
。但
value
数组的长度为2。使用下一个代码作为示例以避免此问题

<!doctype html>
<html>
    <head>
        <script type="text/javascript">
        window.onload=function() {
            var canvas=document.getElementById('mycanvas');
            var ctx=canvas.getContext('2d');
            var graphInfo=[{data:[10,30,40,60,80,10],color:'red'},{data:[10,20,30,40,50,90],color:'grey'}];
            var width=45;

            function getFunctionForTimeout(j){
                var i=0,currx=30,info=graphInfo[j],x5=j*5;
                var fTimeout=function(){
                    var h=Math.max(info.data[i]-x5,0);
                    ctx.fillStyle=info.color;
                    ctx.fillRect(currx+x5,canvas.height-h,width,h);                    
                    currx+=60;  
                    i++;
                    if(i<info.data.length)setTimeout(fTimeout,2000);
                };
                return fTimeout;
            }

            for(var j=graphInfo.length-1;j>=0;j--) {
                setTimeout(getFunctionForTimeout(j),2000);
            }
        };
        </script>
    </head>
    <body>
        <canvas id="mycanvas" height="400" width="400" style="border:1px solid #c3c3c3;">
    </body>
</html>

window.onload=function(){
var canvas=document.getElementById('mycanvas');
var ctx=canvas.getContext('2d');
var graphInfo=[{数据:[10,30,40,60,80,10],颜色:'red'},{数据:[10,20,30,40,50,90],颜色:'grey'}];
var宽度=45;
函数getFunctionForTimeout(j){
变量i=0,currx=30,info=graphInfo[j],x5=j*5;
var fTimeout=函数(){
var h=数学最大值(信息数据[i]-x5,0);
ctx.fillStyle=info.color;
ctx.fillRect(currx+x5,画布。高度-h,宽度,h);
currx+=60;
i++;
如果(i=0;j--){
setTimeout(getFunctionForTimeout(j),2000);
}
};

这里是更改的代码。请测试它

<script type="text/javascript">
    window.onload=function()
    {
        var canvas=document.getElementById('mycanvas');
        var ctx=canvas.getContext('2d');
        var value=[[10,30,40,60,80],[10,20,30,40,50,90]];
        var width=50;
        var currx=30;
        var i = 0, j;
        for(j=0;j<=1;j++)
        {
        var interval = setInterval(function(){

            if (j == value[i].length)
            {
                clearInterval(interval);
                return;
            }

            var h = value[i][j];
            ctx.fillStyle="grey";
            ctx.fillRect(currx+2,canvas.height-h+1,width+2,h+2);
            ctx.fillStyle="red";
            ctx.fillRect(currx,canvas.height-h,width,h);                    
            currx+=60;  
            i++;
        }, 2000);
        }

    };
</script>

window.onload=function()
{
var canvas=document.getElementById('mycanvas');
var ctx=canvas.getContext('2d');
var值=[[10,30,40,60,80],[10,20,30,40,50,90];
var宽度=50;
var currx=30;
var i=0,j;

因为(j=0;j查看区间函数中
j
的值,它不是您认为的值(它将是2)。您没有用这个问题明确说明您的意图……您是否打算做类似的事情