我有一个非常基本的代码来加载Bing地图。通过将此代码放在HTML的head部分中,它会将地图加载到div #map。
中这样可以正常工作:
<script type="text/javascript">
window.onload = GetMap;
function GetMap()
{
map = new VEMap('map');
map.LoadMap();
}
</script>
由于上面的代码只是加载了GetMap函数。所以不应该在没有使用函数的情况下使用函数内的代码吗?例如:
<script type="text/javascript">
map = new VEMap('map');
map.LoadMap();
</script>
但为什么这不起作用?
答案 0 :(得分:1)
如果将它放在head部分中,它将在渲染整个页面之前执行,并创建“map”div。这在尝试更改div内容时会导致错误。
通过将其包装在函数中并在窗口加载时调用该函数,可以确保仅在页面完全呈现后才执行代码。
或者你可以把你的代码放在div之后,然后就可以了。
答案 1 :(得分:1)
我假设Bing地图绑定到DOM元素以显示地图(就像Google地图一样)。如果是这种情况,必须首先由浏览器加载DOM元素才能使绑定工作。在window.load上加载它可确保发生这种情况。如果您将代码移到页面底部,就在body
代码上方,我相信您的代码应该有效。
答案 2 :(得分:1)
它不起作用,因为调用时地图元素不存在于DOM中
map = new VEMap('map');
窗口onload事件在文档加载过程结束时触发 - 因此文档中的所有对象都在DOM中。
答案 3 :(得分:1)
长话短说:
如果您不喜欢功能(他们对您做了什么?!),请将第二个脚本放在body
元素的底部