javascript - 带有附加参数的按钮(非 ajax)

标签 javascript jquery html onclick

我有一个按钮可以将搜索结果过滤到最近的位置。

我的 html 按钮

<a href="trending" onclick="addUrl(this); alert(this);" class="btn btn-warning" id="location">Nearest Location</a>

我的jquery

function addUrl(element){
    if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function(position){
            var lat = position.coords.latitude;
            var lng = position.coords.longitude;
            console.log(lat);
            console.log(lng);

            $(element).attr('href',function(){
                return element.href + '?lat=' + lat + '&lng=' + lng;
            });


        });
    }

    else
        alert("navigator.geolocation is not available");
}

当我单击按钮时,似乎导航到不带参数的网址。不确定这里出了什么问题。

最佳答案

问题在于 geolocation.getCurrentPosition 函数是异步的,因此实际上您的代码在执行重定向操作后更改了 href 属性。您可以禁用默认链接点击操作(在点击事件处理程序中使用 e.preventDefault()return false)并在 geolocation.getCurrentPosition 回调中使用window.location.href = YOUR_URL_WITH_PARAMS 这将导致重定向。

document.getElementById('location').addEventListener("click", function(e){
    e.preventDefault();
    var href = e.target.href;
    addUrl(href);
});

function addUrl(href){
    if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function(position){
            var lat = position.coords.latitude;
            var lng = position.coords.longitude;
            console.log(lat);
            console.log(lng);
            window.location.href = href + '?lat=' + lat + '&lng=' + lng;


        });
    }

    else
        alert("navigator.geolocation is not available");

}

关于javascript - 带有附加参数的按钮(非 ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234388/

相关文章:

jquery - 使用 ASP.NET、Knockout.js、JQuery 将数据绑定(bind)到 <select> 的推荐方法是什么?

javascript - 如何从组中获取翻译属性?

validation - HTML5 样板,HTML5 重置 CSS 验证

html - 为什么在 Firefox 中调整大小后的图片下方有一条黑线?

javascript - 在 JavaScript 中以所有可能的方式将 2 个数组合并为 1 个数组

javascript - 获取 TD 单元格宽度以指定宽度 % 环绕 div

javascript - 了解 JQGrid 中网格嵌套的级别

javascript - 在 mouseup 上切换 CSS

javascript - 获取与请求

html - 如何在 IE 中使用 HTML 5 录制音频文件