| 
	
		
 Не могу разобраться с вызовом функции 
		
		
		
		Здравствуйте. 
	Я пишу небольшой генератор картинок на <canvas>. В самом начале у меня на строке: 
var ctx = $('#bart')[0].getContext("2d");
Вылезало: "Uncaught TypeError: Cannot call method 'getContext' of undefined " После оборачивания в 
$(document).ready(function() { ... 
});
Всё заработало. Написал я скрип со следующей структурой: Vars function draw(text){...} draw('test') И всё работало! Но при попытке сделать кнопочку: Код: 
	<input name='test' onclick='draw('bla')' type='button' value='Написать!'>Код: 
	Uncaught ReferenceError: draw is not definedПопытался вернуть всё "как было", но походу не получилось, т.к. Сейчас на нажатие этой же кнопочки хром реагирует так: Код: 
	Uncaught SyntaxError: Unexpected token }Код: 
	window.script1344581169582=1; | 
	
		
 onclick="draw('bla')" 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 С getContext я разобрался как раз этим :$(document).ready(function() { ... 
	});: Проблема сейчас эта: Код: 
	Uncaught SyntaxError: Unexpected token } | 
	
		
 Цитата: 
	
  | 
	
		
 
$(document).ready(function() {
var ctx = $('#bart')[0].getContext("2d");
var sprite = new Image();
var marginTop = 48;
var marginLeft = 0;
var line = '';
var textWidth = 0;
var textCount = 0;
sprite.src = './images/sprite.png';
function draw(text){
	text += ' '; //Добавляю пробел
	ctx.fillStyle = '#fff';
	ctx.textAlign = "left";
	ctx.font = " 18px Flow ";
	textWidth = ctx.measureText(text).width;
	textCount = Math.floor(440/textWidth);
	marginLeft = (500 - textWidth*textCount)/2+3; //КОСТЫЛЬ!!! компенсирую пробел в конце строки!
	marginTop = 48; // Сбрасываю отступ сверху	
	sprite.onload = function() {
		ctx.drawImage(sprite, 0, 0, 500, 310, 0, 0, 500, 310);
		for (var tc = 0; tc < textCount; tc++){
				line += text; // Формирую строку
			};
		for (var i = 0; i < 9; i++) {
			ctx.fillText(line, marginLeft, marginTop);
			marginTop += 18;
		};
		ctx.drawImage(sprite, 498, 128, 80, 180, 406, 118, 80, 180);		
	};
};
draw('test');
})
 | 
	
		
 У Вас неправильная логика 
	sprite.onload не может быть внутри draw наоборот из sprite.onload надо draw вызывать 
var sprite = new Image();
sprite.onload=function(e){draw('text')};
sprite.src=....
function draw(){ctx.drawImage...}
а потом когда будете кнопкой вызывать картинка уже загружена будет в прелоадер 
<input type=button onclick="draw('tratata')">
 | 
	
		
 Цитата: 
	
 Уже, нашёл)  | 
	
		
 
$(document).ready(function() {
var ctx = $('#bart')[0].getContext("2d");
var sprite = new Image();
sprite.src = './images/sprite.png';
sprite.onload=function(e){draw('text')};
var marginTop = 48;
var marginLeft = 0;
var line = '';
var textWidth = 0;
var textCount = 0;
function draw(text){
	text += ' '; //Добавляю пробел
	ctx.fillStyle = '#fff';
	ctx.textAlign = "left";
	ctx.font = " 18px Flow ";
	textWidth = ctx.measureText(text).width;
	textCount = Math.floor(440/textWidth);
	marginLeft = (500 - textWidth*textCount)/2+3; //КОСТЫЛЬ!!! компенсирую пробел в конце строки!
	marginTop = 48; // Сбрасываю отступ сверху	
	ctx.drawImage(sprite, 0, 0, 500, 310, 0, 0, 500, 310);
	for (var tc = 0; tc < textCount; tc++){
		line += text; // Формирую строку
	};
	for (var i = 0; i < 9; i++) {
		ctx.fillText(line, marginLeft, marginTop);
		marginTop += 18;
	};
	ctx.drawImage(sprite, 498, 128, 80, 180, 406, 118, 80, 180);		
};
});
 | 
	
		
 а зачем  sprite.onload = function() { 
	внутри оставили-? просто оставьте marginLeft = (500 - textWidth*textCount)/2+3; marginTop = 48; ctx.drawImage(sprite, 0, 0, 500, 310, 0, 0, 500, 310); ....  | 
| Часовой пояс GMT +3, время: 04:14. | 
		
  |