Uncaught Reference Error в jQuery

0

У меня есть некоторый 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 не очень много. Я очень новичок в этом. Я буду рад принять предложения по этому поводу, но если бы вы могли понять, почему этот код дает мне ошибку, это было бы очень признательно.

Как я уже упоминал, странно, что код работает нормально.

Теги:

2 ответа

1
Лучший ответ

Я считаю, что вы сталкиваетесь с проблемой объема. Поскольку вы определяете свою функцию внутри события on click, функция функция cropSuccess(data) не считает ее действительной. Вытащите recalculateCropBoxHeight функцию из события, и он должен быть в состоянии назвать его.

1

recalculateCropBoxHeight объявляется внутри другой функции. Это не глобально. Он не существует в области, которую вы пытаетесь вызвать.

Переместите его вне этой функции. Похоже, что все равно касаются переменных, которые являются глобальными.

  • 0
    Спасибо за ваш ответ. Вы и Мирие оба ответили одновременно. Я назвал Мирие «принятым ответом» просто потому, что у него не так много репутации и значков, как у вас, а не как качество вашего ответа :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню