2010-08-22 5 views
2

이런 일에 매달려있는 종류의 이유는 도움이 필요합니다. HTML5 및 JavaScript를 사용하여 이미지에 텍스트를 삽입하고 텍스트가있는 새 이미지를 만듭니다. 텍스트를 수동으로 추가하는 경우에는 모든 것이 좋지만 텍스트를 값으로 함수에 전달하려고하는 경우에는 발생하지 않습니다. 여기자바 스크립트, 값을 함수로 전달

function draw_text(topt,bott){ 
    var canvas = document.getElementById("e"); 
    var context = canvas.getContext("2d"); 
    var img = new Image(); 
    img.src = "testimage.jpg"; 
    img.onload = function() 
    { 
    context.drawImage(img, 0, 0); 
    draw_text(); 
    }; 
    var toptext = this.topt; 
    var bottomtext = this.bott; 
    context.font = "12px Arial"; 
    context.fillStyle = "white"; 
    context.strokeStyle = 'black'; 
    context.fillText(toptext, (img.width-context.measureText(toptext).width)/2, 40); 
    context.strokeText(toptext, (img.width-context.measureText(toptext).width)/2, 40); 
    context.fillText(bottomtext, (img.width-context.measureText(bottomtext).width)/2, 350); 
    }; 

아래의 기능 코드는 내가

draw_text('Text 1','Text 2'); 

하여이 함수를 호출하고 그러나 나도 캔버스는 전혀 표시되지 않거나 텍스트 '정의되지 않은'와 함께 제공됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 그건 그렇고, 중요하다면 나는이 코드를 codeigniter 뷰 파일에서하고있다.

답변

3

'this'를 올바르게 사용하고 있지 않습니다.

바꾸기 :

var toptext = this.topt; 
var bottomtext = this.bott; 

으로 :

var toptext = topt; 
var bottomtext = bott; 

*** 또한, 나는 당신이 draw_text의 정의에 매개 변수없이 재귀 호출에 "draw_text을()"이 발견, 이것은 또한 문제이다.

+0

실제로 이것은 처음 시도한 방법입니다. 일하지 않았어! 두 가지 모두 동일한 결과를 얻고 있습니다. 하지만 topt와 bott에 값을 수동으로 할당하고 function draw_text()와 같은 함수를 코딩하면 작동합니다. – user427357

+0

글쎄, 'this'를 사용하면 확실히 작동하지 않을 것입니다. "draw_text ('asd', 'asd')"함수가 "draw_text (somevar, somevar2)"가 아닌 함수를 호출하면 전달중인 두 변수 중 하나가 null이거나 정의되지 않은 것입니다. – jdc0589

+0

또한 편집 내 원래 대답을 확인하십시오 – jdc0589

관련 문제