Javascript 我正在HTML5画布上工作,并试图在其上画圆圈,但当我试图使用循环时,所有的一切都消失了

Javascript 我正在HTML5画布上工作,并试图在其上画圆圈,但当我试图使用循环时,所有的一切都消失了,javascript,for-loop,canvas,geometry,Javascript,For Loop,Canvas,Geometry,一切都很好,直到我尝试将for循环放入(无论我打算将该循环用于什么)。 函数(){ var c=document.getElementById(“MyCanvas”); var ctx=c.getContext(“2d”); ctx.beginPath(); ctx.arc(200200,0,2*Math.PI); ctx.stroke(); ctx.beginPath(); ctx.arc(200,0,10,0,2*Math.PI); ctx.stroke(); for(int i=0;

一切都很好,直到我尝试将for循环放入(无论我打算将该循环用于什么)。


函数(){
var c=document.getElementById(“MyCanvas”);
var ctx=c.getContext(“2d”);
ctx.beginPath();
ctx.arc(200200,0,2*Math.PI);
ctx.stroke();
ctx.beginPath();
ctx.arc(200,0,10,0,2*Math.PI);
ctx.stroke();

for(int i=0;iJavaScript中没有
int
关键字。您应该改用
var
关键字。还要注意,每个函数只能有一个返回值。代码中的
for
循环没有多大意义。

下面是您的代码重构:

  • 将每个圆定义保存在javascript对象中:

    var circle1={x:200,y:200,radius:200};
    var circle2={x:200,y:0,radius:10};
    
    var circles=[];
    circles.push(circle1);
    circles.push(circle2);
    
      function drawCircle(circle){
          ctx.beginPath();
          ctx.arc(circle.x,circle.y,circle.radius,0,2*Math.PI);
          ctx.closePath();
          ctx.stroke();
      }
    
      function drawAll(){
          for(var i=0;i<circles.length;i++){     
              drawCircle(circles[i]);
          }  
      }
    
  • 将所有圆形对象保存在一个数组中:

    var circle1={x:200,y:200,radius:200};
    var circle2={x:200,y:0,radius:10};
    
    var circles=[];
    circles.push(circle1);
    circles.push(circle2);
    
      function drawCircle(circle){
          ctx.beginPath();
          ctx.arc(circle.x,circle.y,circle.radius,0,2*Math.PI);
          ctx.closePath();
          ctx.stroke();
      }
    
      function drawAll(){
          for(var i=0;i<circles.length;i++){     
              drawCircle(circles[i]);
          }  
      }
    
  • 创建从指定圆对象绘制1个圆的函数:

    var circle1={x:200,y:200,radius:200};
    var circle2={x:200,y:0,radius:10};
    
    var circles=[];
    circles.push(circle1);
    circles.push(circle2);
    
      function drawCircle(circle){
          ctx.beginPath();
          ctx.arc(circle.x,circle.y,circle.radius,0,2*Math.PI);
          ctx.closePath();
          ctx.stroke();
      }
    
      function drawAll(){
          for(var i=0;i<circles.length;i++){     
              drawCircle(circles[i]);
          }  
      }
    
  • 创建一个迭代数组并绘制所有圆的函数:

    var circle1={x:200,y:200,radius:200};
    var circle2={x:200,y:0,radius:10};
    
    var circles=[];
    circles.push(circle1);
    circles.push(circle2);
    
      function drawCircle(circle){
          ctx.beginPath();
          ctx.arc(circle.x,circle.y,circle.radius,0,2*Math.PI);
          ctx.closePath();
          ctx.stroke();
      }
    
      function drawAll(){
          for(var i=0;i<circles.length;i++){     
              drawCircle(circles[i]);
          }  
      }
    
    html中的

    <canvas id="MyCanvas" width="400" height="400"
    style="border:1px solid #000000;">
    </canvas>
    
    
    
    手稿

    </script>
      for(var i=0; i<2; i++){ 
      var c = document.getElementById("MyCanvas");
      var ctx = c.getContext("2d");
      ctx.beginPath();
      ctx.arc(200,200,50,0,2*Math.PI);
      ctx.stroke();
      ctx.beginPath();
      ctx.arc(200,10,10,0,2*Math.PI);
      ctx.stroke();
    }
    
    </script>
    
    
    
    对于(var i=0;i循环的意义是什么?你甚至从未调用过函数,也从未命名过。它总是会返回0。我想为循环做点什么,但当我放下它时,所有东西都消失了,我以前画的东西……不管循环中有什么。1.将
    int
    更改为
    var
    。2.为函数命名。t当你想呼叫任何地方:)试图改变它,但没有任何区别,请注意for循环是为了做其他事情,但我无法解决,因为(正如我所描述的)我以前所做的一切都消失了。@user3084465如果使用
    var
    而不是
    int
    不能解决问题,这并不意味着
    int
    不是问题,这意味着代码中有不止一个问题。如何调用该函数?为什么它没有名称?