2017-06-01 139 views
2

我在我的網站上使用Google Maps API。我顯示路線,距離和路線的持續時間。因此,我有以下代碼:如何在HTML中每10分鐘執行一次Javascript?

<script> 
function initMap() { 
var map = new google.maps.Map(document.getElementById('map'), { 
zoom: 5,}); 
var directionsService = new google.maps.DirectionsService; 
var directionsDisplay = new google.maps.DirectionsRenderer({ 
draggable: false, 
map: map, 
panel: document.getElementById('right-panel')}); 
directionsDisplay.addListener('directions_changed', function() { 
computeTotalDistance(directionsDisplay.getDirections()); 
}); 
displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
} 


function displayRoute(origin, destination, service, display) { 
service.route({ 
origin: origin, 
destination: destination, 
travelMode: 'DRIVING', 
avoidTolls: true, 
drivingOptions: { 
    departureTime: new Date(Date.now() + 100), 
    trafficModel: 'optimistic' 
       }, 
}, 
function(response, status) { 
if (status === 'OK') { 
    display.setDirections(response); 
} else { 
    alert('Could not display directions due to: ' + status); 
} 
}); 
} 

function computeTotalDistance(result) { 
var total = 0; 
var myroute = result.routes[0]; 

total = "Die Entfernung beträgt: <b>" +myroute.legs[0].distance.text  +"</b>"; 
document.getElementById('total').innerHTML = total + "<br>"+ "Die voraussichtliche Fahrzeit beträgt: <b>" +  myroute.legs[0].duration_in_traffic.text + "</b>" + seconds; 


} 


</script> 
<script src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap"> 
</script> 

我想的是,duration_in_traffic更新每隔10min。但我不知道如何每10分鐘用一個參數執行一個函數。 我該怎麼做?

+0

您可以用'的setInterval(函數(){}, 10 * 60 * 1000)' –

+0

這裏的功能是要在10分鐘常規時間間隔調用函數 –

回答

0

您必須設置一個計時器,將調用該函數每隔十分鐘:

function initMap() { 
    ... 
    // Call initially 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 

    // And then call it again every 10 minutes 
    setInterval(function() { 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
    }, 10 * 60 * 1000); 
    //^10 minutes in ms 
} 

對於方便起見,可以在另一個函數包裹displayRoute

function initMap() { 
    ... 
    var displayRouteHandler = function() { 
    displayRoute('Zeiskamer Straße 1, 76756 Bellheim', 'Voelklingen', directionsService, directionsDisplay); 
    }; 
    // Call initially 
    displayRouteHandler(); 

    // And then call it again every 10 minutes 
    setInterval(displayRouteHandler, 10 * 60 * 1000); 
    //^10 minutes in ms 
} 

這是更好,因爲你沒有重複的代碼。

+0

謝謝你最好的答案! –

2

用setInterval來完成任務的重複間隔

setInterval(function() { showAlert('this'); }, 10*60*1000); 
 

 
function showAlert(text){ 
 
    alert("called "+text) 
 
}

0

使用的setTimeout()是這樣的:

function one() { 
 
    console.log(+new Date()); 
 
    setTimeout(function() { 
 
     one(); 
 
    }, 1000) 
 
} 
 

 
one();

每秒鐘變化的值; 可以使用的setTimeout(回調,10 * 60 * 1000)到第二回調每10分鐘

0

用setInterval來一定時間後再次和再次執行的東西。

setInterval(function(){ 
    console.log("test"); 
},3000); 

這會在每3秒鐘後記錄一次「測試」。

相關問題