繁体   English   中英

javascript嵌套的for循环不会一直迭代

[英]javascript nested for loops not iterating all the way through

我试图在HTML画布上放置一个circle ,该画布在(x, y)上的尺寸为1920 * 850 (x, y)其中x变化了50y变化了75 我设置了一个嵌套的for循环来完成此操作,但是很快发现它不起作用,即循环在某个点之后停止了。 然后,我使用简单的for循环进行了一些场景,没有circle放置代码,发现它们也在某个点之后也停止了。

在下面的代码中,我有一个简单的嵌套for循环,运行它时,在i = 14j = 19时它停止。 console ,它仅指出“在Javascript控制台中发生了错误

 for (var i = 0; i < 20; i++) { j = 0 for (var j = 0; j < 70; j++) { console.log('i: ' + i + ' j: ' + j); } } 

这里根本有什么问题吗,这看起来像是一段简单的代码,但我不知道为什么它会停止。

有任何想法吗?

我已经解决了这个问题。 我发现一则帖子,其中控制台日志在999之后没有显示for循环的输出。此外,我的初始javascript循环生成圆时出错,我在绘制每个圆后都没有使用beginPath,给出非常混乱的结果。

带有for循环的IE控制台日志

审查之后,我意识到我的代码可能仍在运行,但是控制台未显示它。 因此,我重新编写了代码以填充画布,并且现在可以正常工作了。

$(document).ready(function ()
{
    var header = $('#header');
    var footer = $('#footer');

    var canvas = $('#myCanvas3')[0];
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight - header.height() - footer.height();
    var ctx = canvas.getContext('2d');


    var i = 0;
    var j = 0;

    for (var y = 1; y < 18; y++)
        {
            i = y * 50;
            for (var x = 0; x < canvas.width; x++)
            {
                j += 1;
                if (j == 50) {
                    console.log('x: ' + x);
                    ctx.beginPath();
                    ctx.fillStyle = 'red';
                    ctx.arc(x, i, 2, 0, Math.PI * 2, false);
                    ctx.fill();
                    j = 0;
                }
            }
        }

});

经验教训-在画布上绘制项目时,请确保在绘制新项目时使用beginPath!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM