2016-04-02 13 views
0

を返さない、私は私のために二度目の関数の戻り値では、このJavascriptの機能は、任意の値

ReferenceError: getCanvas is not defined.

のような例外が発生しました。

  1. 私はすべての呼び出しで関数の戻り値が必要です。

が、これは準備ができている場合にのみ、あなたはhtml2canvasを呼び出すときに、あなたのキャンバスはすぐに準備ができていない、あなたはそれを使用しようと、getCanvasを使用する必要があります

var getCanvas; // global variable  

function dimage() { 
    //get canvas image 
    var element = $("#pnldevice"); 
    html2canvas(element, { 
     onrendered: function (canvas) { 
      $("#previewImage").append(canvas); 
      getCanvas = canvas; 
      alert(getCanvas); 
     } 
    }); 
    var imgageData = getCanvas.toDataURL("image/png"); 
    // Now browser starts downloading it instead of just showing it 
    var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream"); 
    $("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData); 
}; 
+1

食べ物( 'html2canvas')を調理した後(' onrendered')に食べる準備ができていることを期待しています( 'getCanvas')。 [関数の内部で変数を変更した後に変数が変更されないのはなぜですか?](http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of -a-function-asynchron) –

+0

@JonathanLonowski:実際には、私はgridview javascript検証の問題に直面しています。私はこれについてurヘルプが必要です。私はstackoverflowで尋ねた問題のリンクを掲載しました。何がコードに間違っていることをお勧めします。 – BNN

+0

@JonathanLonowski:申し訳ありませんが、間違ったリンクを投稿しました。私のリンクはhttp://stackoverflow.com/questions/36355830/gridview-validation-is-not-working-properly-in-javascript – BNN

答えて

0

..事前にありがとうございます。
すべてのコードは、初期化するonrendered関数内にある必要があります。別の関数を呼び出すと、html2canvasからコードを解離できます。

私はhtml2canvasを知らないので、私は大部分のライブラリの動作を世界的に知っています。

注:変数にはgetCanvasという名前を付けるべきではありません。関数(アクション)のためにgetを保ちますが、それはオブジェクトのようです。

var myCanvas; // global variable  

function dimage() { 
    //get canvas image 
    var element = $("#pnldevice"); 
    html2canvas(element, { 
     onrendered: function (canvas) { 
      $("#previewImage").append(canvas); 
      myCanvas= canvas; 
      console.log("myCanvas", myCanvas);// F12 to see console and see your logs 
      //alert(myCanvas);// We prefer to use console :-P 
      // Maybe you should pass canvas as parameter 
      onCanvasReady(); 
     } 
    }); 
} 

function onCanvasReady() { 
    var imgageData = myCanvas.toDataURL("image/png"); 
    // Now browser starts downloading it instead of just showing it 
    var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream"); 
    $("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData); 
} 

すべてのJSキャンバスの世界は非常に複雑で、初心者の方は基本が不足している可能性があります。

download属性は無効で、カスタムデータを使用するにはdata => .data( "download"、 "your_pic_name.png")および.data( "download")を使用してください。

+0

申し訳ありませんが、私はjavascriptで新しいです、私は他の関数からそれを呼び出す方法を理解していません? – Pravin

+0

私はdimage()関数から別の関数にhtml2canvasを分離し、それをmain関数に呼び出します。しかし、最初の関数は戻り値ではありません。 – Pravin

+0

これは唯一のアドバイスです。私は自分の投稿を編集中です。 – Loenix

関連する問題