[英]canvas id not being recongized in javascript
我試圖找到為什么我的html canvas元素在javascript中無法識別。
我不確定為什么我的canvas元素為null。 我在html中定義它,並且只在觸發DOMContentLoaded事件時運行javascript。
index.html的:
<!DOCTYPE html>
<html>
<head>
<title>Whiteboard</title>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css" />
</head>
<body>
<canvas id="canvas">Your browser doesn't support "canvas".</canvas>
<!--<script src="/node_modules/socket.io/socket.io.js"></script>-->
<script type="text/javascript" src="client1.js"></script>
</body>
</html>
client1.js:
document.addEventListener("DOMContentLoaded", function() {
var mouse = {
click: false,
move: false,
pos: {x:0, y:0},
pos_prev: false
};
// get canvas element and create context
document.write("Hetoo ");
var canvas = document.getElementById("canvas");
if(canvas)
{
document.write("got her.");
}
else
{
document.write(canvas);
}
document.write(" Hepoo ");
var context = canvas.getContext('2d');
document.write("Heyoo ");
}
網頁輸出:
Hetoo null Hepoo
我期待畫布不是null,但javascript由於某種原因無法識別。
有關為何發生這種情況的解釋,請參閱: JavaScript Document.Write替換所有正文內容
快速修復:使用console.log
替換client1.js中的document.write
調用
document.addEventListener("DOMContentLoaded", function() {
var mouse = {
click: false,
move: false,
pos: {x:0, y:0},
pos_prev: false
};
// get canvas element and create context
var mouse = {
click: false,
move: false,
pos: {x:0, y:0},
pos_prev: false
};
// get canvas element and create context
console.log("Hetoo ");
var canvas = document.getElementById("canvas");
if(canvas)
{
console.log("got her.");
}
else
{
console.log(canvas);
}
console.log(" Hepoo ");
var context = canvas.getContext('2d');
console.log("Heyoo ");
})
您還應該考慮將腳本標記移動到head
元素中,並使用async
或defer
屬性來控制它們的加載方式(如有必要)
我正在獲取上下文對象嘗試下面的代碼並讓我知道
var canvas = document.getElementById("canvas"); console.dir(canvas.getContext('2d'));
<canvas id="canvas">Your browser doesn't support "canvas".</canvas>
如果你刪除DOMContentLoaded
監聽器它應該工作,看到這個答案:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.