0

这是我正在使用的代码:http: //jsfiddle.net/9B84H/26/

function autosuggest() {
var input = document.getElementById('location');
    var options = {types: [],};
    var autocomplete = new google.maps.places.Autocomplete(input, options);
}

function getLatLng() {
    var geocoder = new google.maps.Geocoder();
    var address = document.getElementById('location').value;
    geocoder.geocode({
        'address': address
    }, function (results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
            $('#lat').val(results[0].geometry.location.lat());
            $('#lng').val(results[0].geometry.location.lng());
        } else {
            alert("Geocode failed: " + status);
        }
    });
}

有两个变量几乎相同​:

var address = document.getElementById('location').value;
var input = document.getElementById('location');

有没有机会将它组合成一行作为全局变量?

4

1 回答 1

0

您可以使用匿名自调用函数或仅使用 jQuery 中的 dom-ready 方法来包装您的代码(如果您不将 JS 代码放在页面底部,dom-ready 似乎是一个更好的主意)。

我做了一个示例,删除了您输入的 onclick、onfocus 属性并将它们放在 javascript 部分中:http: //jsfiddle.net/9B84H/27/

$(function() {
    var location = document.getElementById('location');
    var getLatLng = function() {
        var geocoder = new google.maps.Geocoder();
        var address = location.value;
        geocoder.geocode({
            'address': address
        }, function (results, status) {
            if (status === google.maps.GeocoderStatus.OK) {
                $('#lat').val(results[0].geometry.location.lat());
                $('#lng').val(results[0].geometry.location.lng());
                alert("Geocode success");
            } else {
                alert("Geocode failed: " + status);
            }
        });
    };
    var autosuggest = function() {
        var options = {types: []};
        var autocomplete = new google.maps.places.Autocomplete(location, options);
    };
    $("#location").on("focus", autosuggest);
    $(":button[name='Geocode']").on("click", getLatLng);
});

您现在有一个名为的局部变量location,它引用文档中的#location 元素。

于 2012-11-04T22:35:05.243 回答