2016-11-18 111 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; 
相關問題