【问题标题】:How to access to local variable from outside the function?如何从函数外部访问局部变量?
【发布时间】:2014-10-09 23:00:39
【问题描述】:

如何从函数外部访问局部变量?

当按下时,它应该提醒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> 

【问题讨论】:

  • 简单的答案:不要把它放在本地。

标签: javascript jquery


【解决方案1】:

您可以通过在其前面加上 window. 前缀并将其从顶部的变量声明中删除来使其成为全局变量。下面的行成功了

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

DEMO

【讨论】:

  • @nomwerygeqoilu 欢迎您!如果有帮助,请不要忘记将其标记为答案:)
  • 是的,我尝试了 5 次来标记答案,但我必须等待 5 分钟。
  • 当然变量不再是本地的了。在函数之外无法访问 local 变量。
【解决方案2】:

在我看来,您有两个选择,第一个意味着更改功能,另一个则不:

1- 通过不使用 var 在函数内声明它来使其成为全局变量

2- 使用 javascript/jQuery 访问 HTML 上的值。

例如:alert($('#distance_bottom span').html());

(为简单起见,以 jQuery 为例)

【讨论】:

  • 是的,答案已编辑。我个人不喜欢在窗口/全局范围内声明变量,但这取决于你
  • 为什么你不喜欢声明变量?
猜你喜欢
  • 2011-04-15
  • 2020-03-03
  • 2021-05-17
  • 1970-01-01
  • 2017-05-25
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多