我想在我的脚本中执行以下操作:
在一个函数中声明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()
函数,使用变量x
和h
投放2个警报。但是,如何在点击链接时抛出这两个警报(参见上面的html代码)?
答案 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