2013-02-26 78 views
0

我沒有得到這個代碼的工作:帆布HTML5 JavaScript代碼不工作,與canvas.toDataURL()

(function() { 
    // Creates a new canvas element and appends it as a child 
    // to the parent element, and returns the reference to 
    // the newly created canvas element 


    function createCanvas(parent, width, height) { 
     var canvas = {}; 
     canvas.node = document.createElement('canvas'); 
     canvas.context = canvas.node.getContext('2d'); 
     canvas.node.width = width || 100; 
     canvas.node.height = height || 100; 
     parent.appendChild(canvas.node); 
     return canvas; 
    } 

    function init(container, width, height, fillColor) { 
     var canvas = createCanvas(container, width, height); 
     var ctx = canvas.context; 
     // define a custom fillCircle method 
     ctx.fillCircle = function(x, y, radius, fillColor) { 
      this.fillStyle = fillColor; 
      this.beginPath(); 
      this.moveTo(x, y); 
      this.arc(x, y, radius, 0, Math.PI * 2, false); 
      this.fill(); 
     }; 
     ctx.clearTo = function(fillColor) { 
      ctx.fillStyle = fillColor; 
      ctx.fillRect(0, 0, width, height); 
     }; 
     ctx.clearTo(fillColor || "#ddd"); 

     // bind mouse events 
     canvas.node.onmousemove = function(e) { 
      if (!canvas.isDrawing) { 
       return; 
      } 
      var x = e.pageX - this.offsetLeft; 
      var y = e.pageY - this.offsetTop; 
      var radius = 10; // or whatever 
      var fillColor = '#ff0000'; 
      ctx.fillCircle(x, y, radius, fillColor); 
     }; 
     canvas.node.onmousedown = function(e) { 
      canvas.isDrawing = true; 
     }; 
     canvas.node.onmouseup = function(e) { 
      canvas.isDrawing = false; 
     }; 
    } 

    var container = document.getElementById('canvas'); 
    init(container, 200, 200, '#ddd'); 

})(); 

function hi(){ 
var canvas = document.getElementsByTagName('canvas'); 
var imageData = canvas.toDataURL(); 
    document.getElementById("his").innerHTML=imageData; 
} 

這是一個小的JavaScript代碼,這會在div一個小帆布與idcanvas

而且,我正在嘗試使圖像保存,並將dividhis保存的圖像寫入。現在,這是代碼停止工作的地方...我非常感謝您的幫助,謝謝! :)

+0

爲什麼你輸出URL爲'innerHTML'? – Bergi 2013-02-26 19:04:46

+0

@bergi我以爲它的網址可以用純文本訪問。 – seanlevan 2013-02-26 19:06:45

+0

是的,儘管如此,您最好應該使用'.textContent'。 – Bergi 2013-02-26 19:07:29

回答

2

document.getElementsByTagName('canvas')返回一個NodeList,而不是一個單一的元素。因此,使用

function hi(){ 
    var canvas = document.getElementsByTagName('canvas')[0]; 
    imageData = canvas ? canvas.toDataURL() : "could not find a <canvas> element"; 
    document.getElementById("his").textContent = imageData; 
} 
+0

謝謝 - 你 - 所以 - 非常多! :) – seanlevan 2013-02-26 19:29:19

+0

仍然無效,但...:| http://jsfiddle.net/kneDX/973/ – seanlevan 2013-02-26 19:30:04

+0

當我做你剛纔在你的例子中,我得到這個:http://jsfiddle.net/kneDX/974/ – seanlevan 2013-02-26 19:32:15

1

圖像數據URL屬於圖像src屬性。圖片沒有innerHTML

+0

我認爲它的URL將以純文本形式訪問。 – seanlevan 2013-02-26 19:07:17

+0

仍然不起作用。看看這個:http://jsfiddle.net/kneDX/972/ – seanlevan 2013-02-26 19:09:09