2010-07-13 25 views
30

Khi tôi cố gắng thực hiện điều này trong jQuery, tôi nhận được $ctx.getContext is not a function trong firebug.

var $ctx = $('<canvas />', {width:'100', height:'100'}) 
$widget.append($ctx)          
$ctx.getContext('2d')          

Bất kỳ ý tưởng nào khiến tôi gặp phải lỗi này? Làm cách nào để tự động tạo và khởi tạo phần tử canvas?

Trả lời

65

$ctx là đối tượng jQuery. sử dụng $ctx[0].getContext('2d') để nhận được ngữ cảnh

+0

'var $ ctx = $ ('', {width: '100', height: '100'}) [0] .getContext ('2d')' –

+0

sẽ gán $ ctx ngữ cảnh canvas cả hai lẫn lộn và không, tôi tin rằng, những gì Evan là đi cho ... anh ta cần phải thu thập kết quả của getContext() gọi tho - vì vậy bạn đang chính xác ở đó ... –

+2

@Evan, bạn đã nhảy thêm bước bây giờ .. cho một lớp lót thử '$ ('', {width: '100', height: '100'}) .appendTo ($ widget) [0] .getContext ('2d')' nhưng bây giờ bạn không có một biến được tham chiếu đối tượng jquery của bạn .. –

1

Nếu sử dụng excanvas, bạn sẽ cần phải sử dụng phần sau để nó hoạt động trong IE.

var canvas = $ctx[0]; 

if (canvas.getContext == undefined) { 
    return G_vmlCanvasManager.initElement(canvas).getContext("2d"); 
} 

return canvas.getContext('2d') 
-5

điều đầu tiên trước tiên, bạn cần phải kiểm tra xem dòng sau có tồn tại hay không và đầu tài liệu HTML.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"> 

dòng này làm điều kiện trích xuất chính sách hiển thị chính sách.

+2

Làm thế nào điều này liên quan đến câu hỏi? – NomadTraveler

Các vấn đề liên quan