-1

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

在一个函数中声明 2 个变量并在窗口加载时调用此函数。之后在我的其他函数中使用这两个变量的值。有什么选项可以在不必将函数外部的这些变量声明为全局变量的情况下执行此操作?

同样,重要的是在页面加载时调用的函数中声明变量。

HTML 代码:

<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()并执行抛出 2 个带有变量和的_main()警报的函数。但是,当我单击链接时,我该如何制作这两个警报(请参阅上面的 html 代码)?xh

4

2 回答 2

0

如果我理解了你的问题,那是因为第一次调用 default() 时,页面还没有完全呈现,所以 'mydiv' 将为空。

如果您删除调用 _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>`
于 2012-05-17T10:32:51.440 回答
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......您可以在此处阅读有关该window.onload方法的更多信息

这里的工作示例

于 2012-05-17T10:34:12.047 回答