2011-11-30 108 views
32

我希望能夠從構造函數中創建Canvas元素,以便我可以製作像這樣的函數。可以從Canvas構造函數創建HTML5 Canvas元素

function createCanvasContext(height,width) 
{ 
    var body = document.getElementsById('body')[0]; 
    var canvas = new Canvas(); 
    canvas.height=height; 
    canvas.width = width; 
    var context = canvas.getContext('2d'); 
    body.appendChild(canvas); 
    return context; 
} 

我會在說「畫布是未定義」並不HTML5不允許創建從構造元素行VAR帆布=新的Canvas()的錯誤?或者是否有我需要傳遞給構造函數的參數。任何想法都會很棒。

+3

沒有Canvas構造函數。如果你想創建一個新的''元素,使用'var canvas = document.createElement(「canvas」);'。 * PS。 [這個答案](http://stackoverflow.com/a/7858231/938089)似乎解決了你以前的問題。使用[接受回答](http://meta.stackexchange.com/a/5235/169101)功能將答案標記爲正確答案。 –

回答

65

雖然你可以做new Image()就好,new Canvas()是不是一件東西! Canvas即使是HTMLCanvasElement也不是什麼東西。儘管如此,你不能使用它的構造函數。

document.createElement('canvas');是你想要的。你必須使用它,就像使用div一樣。

44
var mycanvas = document.createElement("canvas"); 
mycanvas.id = "mycanvas"; 
document.body.appendChild(mycanvas); 
+5

這是更完整的答案! – EmilyJ

+0

如果你自己創建了元素,爲什麼要設置一個ID?爲CSS?並且在很多情況下,您希望創建一個畫布,但不會將其添加到DOM。 –

+0

簡單的信息:在文檔中,一個ID只能用於一個元素。 –