2016-04-02 20 views
0

dönmez, kendim için ikinci kez fonksiyon dönüş değeri azından buJavaScript işlevi herhangi bir değer

ReferenceError: getCanvas is not defined.

gibi istisna var.

  1. Ben her çağrının, işlev dönüş değeri istiyorum.

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

Sen ('html2canvas') bunu sipariş sonra (' getCanvas') yemeye Yemek hazır olması bekleniyor, ancak konum ('onrendered'). [Değişkenim neden bir işlev içinde değiştirildikten sonra değiştirilmiyor?] (Http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of -a-function-asynchron) –

+0

@JonathanLonowski: Aslında, gridview javascript doğrulamada bir sorunla karşı karşıyayım. Bunun için yardıma ihtiyacım var. Stackoverflow'ta sorduğum sorun için bağlantıyı gönderdim. Lütfen kodda neyin yanlış olduğunu öner. – BNN

+0

@JonathanLonowski: Üzgünüm, bazı yanlış bağlantılar yayınladım. Benim bağlantı http://stackoverflow.com/questions/36355830/gridview-validation-is-not-working-properly-in-javascript Üzgünüm, ben javascript yeniyim – BNN

cevap

0

bu hazır olduğu zaman sen html2canvas çağırdığınızda, getCanvas kullanmalısınız, tuval anında hazır değil .. şimdiden teşekkürler ve bunu kullanmayı deneyin.
Tüm kod html2canvas verdiği kodu ayırmak için başka işleve çağrı kullanabilirsiniz, sen başlatmak onrendered işlevi olmalıdır.

Ben kütüphanelerin en davranışını bilerek küresel konuşuyorum, html2canvas bilmiyorum.

Not: Dilerseniz değişken getCanvas isim olmamalı, biz fonksiyonu (eylem) için almak tutmak ve onu bir nesne gibi görünüyor.

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); 
} 

Tüm JS tuval dünyası çok karmaşıktır, yeni başlayanlarsanız temel özelliklerden yoksun olabilirsiniz.

Dikkat edin, indirme özelliği geçerli değil, özel olanı kullanmak için data => .data ("download", "your_pic_name.png") ve .data ("download") kullanın. Pişmiş oldu önce

+0

i diğer işlevinden aramak anlamak değilim olduğunu ? – Pravin

+0

html2canvas'ı dimage() işlevinden başka bir işleve ayırdım ve ana işlev olarak çağırıyorum.ama yine de ilk kez dönüş değeri değil işlevi. – Pravin

+0

Bu sadece bir tavsiyedir. Mesajımı düzenliyorum. – Loenix

İlgili konular