2016-11-18 112 views
1

我有这段代码。如果条件满足,我创建一个按钮“在地图上显示”。现在我需要在创建的按钮上运行onclick事件,将用户重定向到新URL上的地图。我尝试使用函数go_to_map中的“window.location”,但它不起作用。任何帮助?用创建的按钮重定向到另一个页面

function coordinates_Conv (d, m, s) { 
    return d + m/60 + s/3600; 
} 

function alarm(){ 
    var lat_d = parseInt(document.getElementsByClassName("lat_deg")[0].value); 
    var lat_m = parseInt(document.getElementsByClassName("lat_min")[0].value); 
    var lat_s = parseInt(document.getElementsByClassName("lat_sec")[0].value); 
    var lon_d = parseInt(document.getElementsByClassName("lon_deg")[0].value); 
    var lon_m = parseInt(document.getElementsByClassName("lon_min")[0].value); 
    var lon_s = parseInt(document.getElementsByClassName("lon_sec")[0].value); 
    if ((coordinates_Conv (lat_d,lat_m,lat_s)<=90) && (coordinates_Conv (lat_d,lat_m,lat_s)>=0) && (coordinates_Conv (lon_d, lon_m, lon_s)<=180) && (coordinates_Conv (lon_d, lon_m, lon_s)>=0)){ 
    document.getElementById("vypocet").innerHTML= String(Math.round(coordinates_Conv (lat_d,lat_m,lat_s)*1000)/1000) + "<br>" + String(Math.round(coordinates_Conv (lon_d, lon_m, lon_s)*1000)/1000); 

    var show_map = document.createElement("button","map"); 
    show_map.setAttribute("id","map"); 
    show_map.setAttribute("onclick", go_to_map); 
    show_map.innerHTML = "Show on map"; 
    document.body.appendChild(show_map); 

    } 
    else { 
     alert("Invalid input"); 
    } 
} 
function go_to_map(){ 
    var targetMap = "https://www.mapurl.com/" 
    window.location=targetMap; 
} 
+0

试'window.location.href = ' – garglblarg

+0

的可能的复制[动态地添加加入onclick事件按钮?](HTTP:/ /stackoverflow.com/questions/6956258/adding-onclick-event-to-dynamically-added-button) – Mahi

回答

0

您需要show_map.onclick = go_to_map;更换show_map.setAttribute("onclick", go_to_map);。 这是因为onclickevent而不是attribute

+0

设置'window.location'工作得很好。在您的浏览器控制台中试试它:'window.location ='http:// google.com''。 [MDN甚至在他们的示例中以这种方式演示](https://developer.mozilla.org/en-US/docs/Web/API/Window/location#Example_1_Navigate_to_a_new_page)。 – Timo

+0

这是一个简写,它可能不会做你期望的,即使是mdn状态:“在大多数情况下:location ='http://www.example.com'是location.href的同义词。 – garglblarg

+0

你们是对的,谢谢。我更新了我的答案。 – Gavin

1

你的onclick处理程序永远不会被首先调用。

要设置它正确处理程序中,将元素的onclick直接:

show_map.onclick = go_to_map; 
相关问题