文件之间的Javascript变量

Javascript var between files

本文关键字:变量 Javascript 之间 文件      更新时间:2024-02-27

我在将变量导入从回调运行的js函数时遇到问题,如下所示:

<script type="text/javascript" src="/javascripts/maps.js"> </script>
  <script async defer
          src="https://maps.googleapis.com/maps/api/js?key=<%= mapkey%>
        &libraries=visualization&callback=initMap">
  </script>

问题是我不能在initMap中使用全局变量或外部函数。我正在使用nodejs。

function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 8,
        center: {lat: -34.397, lng: 150.644}
    });
    var geocoder = new google.maps.Geocoder();
    document.getElementById('submit').addEventListener('click', function() {
        geocodeAddress(geocoder, map);
    });
}
function geocodeAddress(geocoder, resultsMap) {
    var address = document.getElementById('address').value;
    geocoder.geocode({'address': address}, function(results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
            resultsMap.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
                map: resultsMap,
                position: results[0].geometry.location
            });
        } else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
    });
}

当地址取自html表单或可以明确定义时:

var address = document.getElementById('address').value; or
var address = ["place", "place"]

然而,我需要能够使用全局变量或导出函数:

var address = global_locations (defined elsewhere as a global.gobal_locations = ["place", "place"] and works in other files) or
var address = loc.getAddresses();

我对异步的理解还不够,无法完成

您可以使用window为要全局访问的变量创建一个名称空间。

请查看Blazemonger在JavaScript';窗口';对象是使用该对象的正确方式?。

我想这会帮助你去你想去的地方。

您可以添加一个动态脚本加载功能,如下所示:

function loadjs(filename){
    var jsfile=document.createElement('script')
    ref.setAttribute("type","text/javascript")
    ref.setAttribute("src", filename)
}

loadjs("myscript.js")