我已經創建了一個程序,可以使用w,a,s和d鍵在畫布內向上,向下,向右和向左移動矩形塊。設置表示畫布寬度的變量時出錯。錯誤出現在這行代碼:Uncaught TypeError:無法讀取在JavaScript中未定義的屬性'寬度'
var cw=canvas.width;
我一直在試圖在Chrome上使用此代碼。以下是完整的代碼:
<html>
<head>
<script>
var positionX=0;
var positionY=0;
var cw=canvas.width;
var ch=canvas.height;
var canvas=document.getElementById("canvas1");
window.addEventListener("keydown", onKeyPress, true);
function draw(){
var canvas=document.getElementById("canvas1");
var cw=canvas1.width;
var ch=canvas1.height;
var context=canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.fillStyle="green";
context.fillRect(positionX, positionY, 100, 100);
context.strokeStyle = 'black';
context.stroke();
}
function onKeyPress(e){
if (e.keyCode==87){
positionY=Math.max(0,positionY-15);
}
if (e.keyCode==83){
positionY=Math.min(cw-500,positionY+15);
}
if (e.keyCode==68){
positionX=Math.min(ch-500,positionX+50);
}
if (e.keyCode==65){
positionX=Math.max(0,positionX-50);
}
draw();
}
</script>
</head>
<body>
<div id="firstDiv">
<canvas id="canvas1" width="500" height="500" style="border: 1px solid black;"> </canvas>
</div>
</body>
</html>
'canvas1'定義在哪裏? – Rayon
當您的腳本運行時,您的HTML不在DOM中。在您的HTML –
@ user1049876之後編寫腳本,您不應編輯問題的標題,除非使其更清楚。如果其他人想參考這個例子,他們不會搜索*已解決錯誤:已解決*最好保留原始問題,或澄清問題是什麼。 – sdc