我正在尝试编写一些 JavaScript,但在这方面几乎没有经验。
我读过一些帖子,建议
内的 <script> block 保证在 内的 block 之前运行,但我看到的行为恰恰相反。有人可以向我解释为什么我会看到这个吗?这是我的简单测试页面:
<html>
<head>
<script type="text/javascript">
var test_msg;
function initMap() {
test_msg = "This is a test";
window.alert('initMap: ' + test_msg);
}
</script>
</head>
<body onload="initMap()">
<script type="text/javascript">
window.alert('blargo: ' + test_msg);
</script>
</body>
</html>
当我加载这个(在 Firefox 或 IE 中)时,我看到 2 个消息框:#1:“blargo:未定义”和#2:“initMap:这是一个测试”,表明后面的脚本首先被执行.
感谢您的帮助,
GS。
最佳答案
您的第一个脚本首先被执行...但它所做的只是创建函数和变量。
然后您将在此处调用该函数:
<body onload="initMap()">
...这确保在加载所有文档资源之前不会调用该函数。
<小时/>所以代码执行的总体顺序是:
// first script
var test_msg;
function initMap() {
test_msg = "This is a test";
window.alert('initMap: ' + test_msg);
}
// second script
window.alert('blargo: ' + test_msg);
// function call via window.onload
initMap();
关于<head> 中的 Javascript 在 <body> 中的脚本之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301376/