2010-08-22 8 views
2

En quelque sorte coincé avec cette chose, c'est pourquoi besoin d'aide s'il vous plaît. J'utilise HTML5 et JavaScript pour insérer du texte sur une image et créer une nouvelle image avec le texte dessus. Tout va bien si j'ajoute le texte manuellement, cependant si j'essaye de passer le texte à la fonction en tant que valeur, cela n'arrive pas. Voici le code de la fonction ci-dessousJavaScript, en passant la valeur à la fonction

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

Et j'appelle cette fonction par

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

Mais je soit la toile ne soit pas visible du tout ou il est livré avec le texte « non défini ». Qu'est-ce que je fais mal? En passant, si c'est important je fais ce code dans un fichier de vue codeigniter.

Répondre

3

Vous n'utilisez pas 'ceci' correctement.

Remplacer:

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

Avec:

var toptext = topt; 
var bottomtext = bott; 

*** Aussi, je viens de remarquer que vous avez un appel récursif à la "draw_text()" sans paramètre dans la définition de draw_text, ce qui est aussi un problème.

+0

En fait, c'est ainsi que j'ai essayé la toute première fois. N'a pas fonctionné! Les deux façons, je reçois le même résultat. Mais si j'attribue des valeurs à topt et bott manuellement et codez la fonction comme la fonction draw_text() cela fonctionne. – user427357

+0

Eh bien, en utilisant 'ceci' comme vous ne travaillerez certainement pas. Si appeler la fonction par "draw_text ('asd', 'asd')" fonctionne mais pas "draw_text (somevar, somevar2)", alors l'une des deux variables que vous passez est simplement nulle ou indéfinie. – jdc0589

+0

En outre, vérifiez le modifier à ma réponse d'origine – jdc0589

Questions connexes