从另一个函数访问局部变量

时间:2012-05-17 10:22:31

标签: javascript function variables parameters

我想在我的脚本中执行以下操作:

在一个函数中声明2个变量,并在窗口加载时调用此函数。之后,在我的其他函数中使用这两个变量的值。有没有必要在函数之外声明那些变量作为全局变量的任何选项?

同样,重要的是在一个函数内声明变量,该函数将在页面加载时调用。

HTML code:

<a href=''onclick='_default();return false;'>Link</a>
<div id='mydiv'></div>

使用Javascript:

function _default() {
    var x = document.getElementById('mydiv');
    var h = x.offsetHeight;
    _main(x, h);
}
_default();

function _main(x, h) {
    alert(x);
    alert(h);
}

您将看到此脚本在页面加载时执行_default()_default()函数将2个参数传递给_main()并执行_main()函数,使用变量xh投放2个警报。但是,如何在点击链接时抛出这两个警报(参见上面的html代码)?

2 个答案:

答案 0 :(得分:0)

如果我已经理解了你的问题,那么当第一次调用default(),页面还没有完全呈现时,这是很常见的,所以&#39; mydiv&#39;将为空。

如果你删除了调用_default()的行,而是从body onload调用它,你会发现它按预期工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" language="javascript">
        function _default() {
            var x = document.getElementById('mydiv');
            var h = x.offsetHeight;

            _main(x, h);
        }

        function _main(x, h) {
            alert(x);
            alert(h);
        }
    </script>
</head>
<body onload="_default();">
    <a href='' onclick='_default();return false;'>Link</a>
    <div id='mydiv'>
    </div>
</body>
</html>`

答案 1 :(得分:0)

代码不起作用,因为它在DOM准备好之前执行...改变它如下:

function _default() {
    var x = document.getElementById('mydiv');
    var h = x.offsetHeight;
    _main(x, h);
}

function _main(x, h) {
    alert(x);
    alert(h);
}

window.onload = _default;

这会导致在触发_default()事件时执行load功能... you can read more about the window.onload method here

Working example here