2014-10-09 5 views
0

Как получить доступ к локальной переменной извне функции?Как получить доступ к локальной переменной извне функции?

При нажатии на него должно быть указано значение distance_bottom, но оно не работает, как я могу заставить его работать?

http://jsfiddle.net/dyjb8r9w/11/

<script> 
$(window).load(function(){ 
(function() {  
    var mY, distance_bottom, 
     $distance_bottom = $('#distance_bottom span'), 
     $element_bottom = $('#element_bottom'); 

    function calculatedistance_bottom(elem , mouseY) { 
     return Math.floor(Math.sqrt(Math.pow(mouseY - (elem.offset().top+(elem.height()/2)), 2))); 
    } 

    $(document).mousemove(function(e) {   
     mY = e.pageY; 
     distance_bottom = calculatedistance_bottom($element_bottom , mY); 
     $distance_bottom.text(distance_bottom); 
    }); 
})(); 
}); 
</script> 





<script> 
function reply_click() 
{  
    alert(distance_bottom); 
} 
</script> 
+1

Простой ответ: не делайте его локальным. –

ответ

2

Вы можете сделать его глобальным, предваряя его с window. и удалением его из объявления переменной в верхней части. Ниже линии сделал трюк

window.distance_bottom = calculatedistance_bottom($element_bottom , mY); 

DEMO

+0

добавить 'window.' в код для набора к глобальному var? –

+0

да .. Проверьте скрипку ... –

+0

спасибо, что это хорошо работает. –

0

Я вижу это у вас есть два варианта, первый один влечет за собой изменение функции, а другой нет:

1- сделать это глобальную переменную, не объявляя ее внутри функции с помощью var

2- Доступ к значению в HTML с помощью javascript/jQuery.

Ex: alert ($ ('# distance_bottom span'). Html());

(Пример в jQuery для простоты)

+0

но верхний ответ - работа. –

+0

Да, отредактирован ответ. Лично мне не нравится объявлять переменные в окне/глобальной области, но это зависит от вас – CanIHazCookieNow

+0

Почему вы не любите объявлять переменные? –

Смежные вопросы