2016-04-11 2 views
-2

Я не могу понять, что не так с моим кодом. Пожалуйста, помогите мне. Он дает ошибку выше, когда я пытаюсь запустить код.Ошибка Javascript: «отсутствует» после списка аргументов «

<!DOCTYPE html> 
<html> 

<head> 
    <meta charset="utf-8"/> 
    <title>Mark Snier</title> 
    <link rel="stylesheet" type="text/css" href="stylesheet.css"> 

    <script type="text/javascript"> 
function init() { 

    var canvas = document.getElementById('canvas'); 
    var ctx = canvas.getContext('2d'); 
    var raf; 
    var animatie = window.requestAnimationFrame; 
    var ball = { 
    x: 100, 
    y: 100, 
    vx: 5, 
    vy: 2, 
    radius: 25, 
    color: 'red', 
    draw: function() { 
    ctx.beginPath(); 
    ctx.arc(this.x, this.y, this.radius, 0, Math.PI*2, true); 
    ctx.closePath(); 
    ctx.fillStyle = this.color; 
    ctx.fill(); 

    for (var h = 0; h < 100; h++) { 
     ctx.fillRect (canvas.width-10, w, 10, 10); 
     w += 11 
    } 
    for (var i = 0; i < 100; i++) { 
     ctx.fillRect (0, x, 10, 10); 
     x += 11 
    } 
    for (var k = 0; k < 100; k++) { 
     ctx.fillRect (y, canvas.height-10, 10, 10); 
     y += 11 
    } 
    for (var j = 0; j < 100; j++) { 
     ctx.fillRect (z, 0, 10, 10); 
     z += 11 
    }; 
    }; 
} 
ball.draw();  

function draw() { 
    if (ball.y+ball.vy > canvas.height || ball.y+ball.vy < 0) { 
     ball.vy = -ball.vy; 
    } 
    if (ball.x+ball.vx > canvas.width || ball.x+ball.vx < 0) { 
     ball.vx = -ball.vx; 
    } 
    ctx.clearRect(0,0, canvas.width, canvas.height); 
     var x = 0 
     for (var i = 0; i < 100; i++) { 
     ctx.fillRect (0, x, 10, 10); 
     x += 11 
     } 
     ball.draw(); 
     ball.x += ball.vx; 
     ball.y += ball.vy; 
     raf = window.requestAnimationFrame(draw); 
    } 
    ball.draw(); 
    refresh(); 
    function refresh() { 
     draw() 
     refresh() 
    }  
} 
</script> 

</head> 

    <body onload="init()"> 
    <canvas id="canvas" width="802" height="395"></canvas> 

    </body> 

</html> 
+1

Если вы отформатируете свой код правильно, я уверен, что найти ошибку было бы намного проще. – Biffen

+0

* По крайней мере, * сообщите нам, какая строка вызывает ошибку! – Biffen

+0

Изменить функцию refresh() { draw() обновить() } для функции refresh() { draw() обновить(); } –

ответ

1

Ошибка говорит вам, что вы забыли закрыть любой цикл или функцию. В вашем случае, у вас есть ; в пределах вашего объекта

function init() { 
    var ball = { 
     ... 
     draw: function() {  
     ... 
     }// <-- Remove ; here 
    }; 
} 

Надеется, что это помогает.

+0

Извините, но это не проблема. Код плохо отформатирован, но цикл for закрывается должным образом. – Nicole

+1

U уверен? Я вижу в коде, который он опубликовал, что цикл 'for' не закрыт должным образом и имеет'; 'внутри своего объекта шара. Посмотрите – Sapikelio

+0

Да, я уверен - вы даже отформатировали код выше, и там вы можете видеть, что цикл for закрыт :-) У закрывающей скобки есть дополнительная точка с запятой, но это игнорируется. Проблема заключается в точке с запятой после функции, потому что она находится внутри объекта, где она вызывает синтаксическую ошибку. Я расширил свой ответ, чтобы продемонстрировать. – Nicole

0

Я не знаю, какой инструмент вам дало это сообщение странных ошибок, но при открытии страницы в Chrome, он ясно говорит, что

Uncaught SyntaxError: Unexpected token ; in line 46 

и если вы откроете свой код в правильный редактор, например Webstorm, указывает ту же ошибку.

Здесь вы определяете объект ball, содержащий функцию draw, и поскольку он определен внутри объекта, он не должен заканчиваться ;. Если вы удалите точку с запятой, на странице появится красный шар. Есть больше ошибок, но это должно заставить вас начать. Это правильный код:

var ball = { 
    // ... 
    draw: function() { 
    // ... 
    for (var j = 0; j < 100; j++) { 
    ctx.fillRect (z, 0, 10, 10); 
    z += 11 
    } // <-- you should remove the semicolon you have here - it is unneccessary but is ignored and does not cause problems 
} // <-- you must remove the semicolon you have here 
} 
+1

Это правильный ответ :) – Sapikelio

-1

Вы новичок в javascript? кажется, что вам не хватает некоторых из них; и дополнительные; в некоторых районах,

<script type="text/javascript"> 
    function init() { 
     var canvas = document.getElementById('canvas'); 
     var ctx = canvas.getContext('2d'); 
     var raf; 
     var animatie = window.requestAnimationFrame; 
     var ball = { 
      x: 100, 
      y: 100, 
      vx: 5, 
      vy: 2, 
      radius: 25, 
      color: 'red', 
      draw: function() { 
       ctx.beginPath(); 
       ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true); 
       ctx.closePath(); 
       ctx.fillStyle = this.color; 
       ctx.fill(); 

       for (var h = 0; h < 100; h++) { 
        ctx.fillRect(canvas.width - 10, w, 10, 10); 
        w += 11; 
       } 
       for (var i = 0; i < 100; i++) { 
        ctx.fillRect(0, x, 10, 10); 
        x += 11; 
       } 
       for (var k = 0; k < 100; k++) { 
        ctx.fillRect(y, canvas.height - 10, 10, 10); 
        y += 11; 
       } 
       for (var j = 0; j < 100; j++) { 
        ctx.fillRect(z, 0, 10, 10); 
        z += 11; 
       } 
      } 
     } 
     ball.draw(); 

     function draw() { 
      if (ball.y + ball.vy > canvas.height || ball.y + ball.vy < 0) { 
       ball.vy = -ball.vy; 
      } 
      if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) { 
       ball.vx = -ball.vx; 
      } 
      ctx.clearRect(0, 0, canvas.width, canvas.height); 
      var x = 0; 
      for (var i = 0; i < 100; i++) { 
       ctx.fillRect(0, x, 10, 10); 
       x += 11; 
      } 
      ball.draw(); 
      ball.x += ball.vx; 
      ball.y += ball.vy; 
      raf = window.requestAnimationFrame(draw); 
     } 

     ball.draw(); 
     refresh(); 

     function refresh() { 
      draw(); 
      refresh(); 
     } 

    } 
</script> 
+0

Должно быть, уже работает, я использовал Visual Studio для двойной проверки, кажется странным, когда они не сказали мне, что я пропускаю некоторые; – UserBlanko

Смежные вопросы