Итак, вот мой код, который работает отлично и точно так, как предполагалось.Доступ к глобальной переменной в функции
function setCanvasBackground (src){
var source = document.getElementById('hiddenCanvas');
var source_ctx = source.getContext('2d');
var destination = document.getElementById('visibleCanvas');
var destin_ctx = destination.getContext('2d');
var img = new Image();
img.onload = function(){
source.width = img.width;
source.height = img.height;
source_ctx.drawImage(img, 0, 0, img.width, img.height);
destin_ctx.drawImage(source, 0, 0, img.width/4, img.height/4);
}
img.src = src;
};
Однако, если я перееду переменные вне функции, поэтому они могут быть доступны из других функций, код просто не работает. Вот что я делаю:
var source = document.getElementById('hiddenCanvas');
var source_ctx = source.getContext('2d');
var destination = document.getElementById('visibleCanvas');
var destin_ctx = destination.getContext('2d');
function setCanvasBackground (src){
var img = new Image();
img.onload = function(){
source.width = img.width;
source.height = img.height;
source_ctx.drawImage(img, 0, 0, img.width, img.height);
destin_ctx.drawImage(source, 0, 0, img.width/4, img.height/4);
}
img.src = src;
};
Весь код JavaScript написан в отдельном файле, а не в HTML. Что я здесь делаю неправильно?
Возможно, вы хотите выбрать элементы, которые еще не были загружены в DOM. Первое место, которое вы должны посмотреть, - это консоль разработчика вашего браузера. –
Вы можете исправить это значения _assigning_ для глобальных переменных внутри setCanvasBackground или сделать это в обработчике window.onload или document/ready. –
Можете ли вы воспроизвести пример выполнения JSFiddle? – hugomg