将JavaScript函数分配给文档元素

时间:2012-12-14 19:42:02

标签: javascript geolocation element document

我有以下代码:

<script type = "text/javascript">
    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(geofields);
        }
    }

    function geofields() {
        if (document.getElementById('starthere').checked == 1) {
            document.getElementById('start').value = position.coords.latitude + " " + position.coords.longitude;
        } else {
            document.getElementById('start').value = '';
        }
    }
</script>

我希望function geofields(){显示GeoLocation,将'start'元素的值更改为坐标(从GetLocation()脚本接收),但它不能使用上面的代码。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您需要向position添加geofields参数并调用getLocation(或将其设置为处理程序)。

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(geofields);
    }
}

function geofields(position) {
    if (document.getElementById('starthere').checked == 1) {
        document.getElementById('start').value = position.coords.latitude + " " + position.coords.longitude;
    } else {
        document.getElementById('start').value = '';
    }
}

document.addEventListener('load', getLocation);

答案 1 :(得分:0)

尝试将函数调用放在body元素的onload属性中。

<body onload="getLocation();">

这应该确保在执行函数时加载了dom。

问候。

答案 2 :(得分:0)

来自MDN docs:

navigator.geolocation.getCurrentPosition(function(position) {
  do_something(position.coords.latitude, position.coords.longitude);
});

我觉得你没有将position param传递给你的geofields函数。