2013-02-26 81 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