У меня есть некоторый jquery, который вызывает CropBox (чтобы обрезать iamge динамически). Кажется, что все работает нормально, без ошибок до тех пор, пока не произойдет урожай, тогда я получаю сообщение об ошибке:
ReferenceError: recalculateCropBoxHeight is not defined
recalculateCropBoxHeight();
Соответствующий код:
$('#open_admin_crop_window_button').on('click', function() {
myWidth = $('#cropbox').width();
recalculateCropBoxHeight();
function recalculateCropBoxHeight() {
// CHECK IF myWidth HAS RETURNED A PERCENTAGE INSTEAD OF PIXELS
if( myWidth < 100 ) {
myWidth = $(window).width()/(100/myWidth);
}
if(imgw > myWidth) {
widthRatio = imgw/myWidth;
myHeight = imgh/widthRatio;
} else {
myHeight = imgh;
}
xsize = imgw;
ysize = imgh;
}
runCropBox();
});
function cropSuccess(data) {
var returnedData = JSON.parse(data);
if(!returnedData.error) {
jcrop_api.destroy();
recalculateCropBoxHeight(); // ERROR HAPPENING HERE
runCropBox();
}
}
Извиняюсь, если мой jquery/javascript не очень много. Я очень новичок в этом. Я буду рад принять предложения по этому поводу, но если бы вы могли понять, почему этот код дает мне ошибку, это было бы очень признательно.
Как я уже упоминал, странно, что код работает нормально.
Я считаю, что вы сталкиваетесь с проблемой объема. Поскольку вы определяете свою функцию внутри события on click
, функция функция cropSuccess(data)
не считает ее действительной. Вытащите recalculateCropBoxHeight
функцию из события, и он должен быть в состоянии назвать его.
recalculateCropBoxHeight
объявляется внутри другой функции. Это не глобально. Он не существует в области, которую вы пытаетесь вызвать.
Переместите его вне этой функции. Похоже, что все равно касаются переменных, которые являются глобальными.