2014-05-17 53 views
0

我有一個代碼可以計算A點和B點的里程數。如果里程距A點或B點少於75英里,但是,如果我想返回75英里以外的「免費」,我想返回「您將收取費用」的聲明。如果一個值大於另一個值,jQuery會在文本框中回顯一條語句

我以爲我可以用簡單的如果,否則,如果和else語句處理這個問題,但它不工作:

function initialize() { 
directionsDisplay = new google.maps.DirectionsRenderer(); 
} 
var directionsService = new google.maps.DirectionsService(); 
var directionsService2 = new google.maps.DirectionsService(); 

function calcRoute() { 
var distance1Input = document.getElementById("distance1"); 
var MileageInput = document.getElementById("mileage"); 
var start = "DE75 7AH"; 

var end = document.getElementById("end").value; 
var request = { 
origin:start, 
destination:end, 
travelMode: google.maps.DirectionsTravelMode.DRIVING 
}; 

directionsService.route(request, function(response, status) { 
if (status == google.maps.DirectionsStatus.OK) { 
directionsDisplay.setDirections(response); 
distance1Input.value = Math.round(response.routes[0].legs[0].distance.value/1609.344); 
    } 
}); 

//second route 
var distance2Input = document.getElementById("distance2"); 
var start2 = "AL8 6RE"; 

var end = document.getElementById("end").value; 
var request2 = { 
origin:start2, 
destination:end, 
travelMode: google.maps.DirectionsTravelMode.DRIVING 
}; 

directionsService2.route(request2, function(response, status) { 
if (status == google.maps.DirectionsStatus.OK) { 
directionsDisplay.setDirections(response); 
distance2Input.value = Math.round(response.routes[0].legs[0].distance.value/1609.344); 
    } 
}); 

//mileage cost 
var mileageCost = Math.round(((response.routes[0].legs[0].distance.value/1609.344)-75)+100); 

var derbyDistance = distance1Input.value; 
var londonDistance = distance2Input.value; 

if (derbyDistance < 75) { 
MileageInput.value = 'FREE'; 
} 
else if (londonDistance < 75) { 
MileageInput.value = 'FREE'; 
} 
else { 
MileageInput.value = 'You will be charged expenses'; 
} 

} 

代碼有問題的部分是在那裏我試圖底部基於終點距離多遠返回語句。

您可以在這裏的行動看這個腳本: http://www.samskirrow.com/projects/distr_maps/index2.html

感謝您的幫助

+0

你不使用jQuery。 – jcubic

+1

第54行:您引用'respondService'變量,它只在'directionsService2.route(request2,function(response,status)'函數內部已知。您需要將該代碼放在那裏 – blex

+0

jQuery在哪裏? –

回答

1

反應是.route方法調用的未知外。你應該通過它,這種方式:

function initialize() { 
directionsDisplay = new google.maps.DirectionsRenderer(); 
} 

var directionsService = new google.maps.DirectionsService(); 
var directionsService2 = new google.maps.DirectionsService(); 


function calcRoute() { 
    var distance1Input = document.getElementById("distance1"); 
    var MileageInput = document.getElementById("mileage"); 

    var start = "DE75 7AH"; 
    var end = document.getElementById("end").value; 

    var request = { 
    origin:start, 
    destination:end, 
    travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

    directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 

    directionsDisplay.setDirections(response); 
    distance1Input.value = Math.round(response.routes[0].legs[0].distance.value/1609.344); 
    displayExpenses(response); 
      } 
     }); 

    //second route 
    var distance2Input = document.getElementById("distance2"); 
    var start2 = "AL8 6RE"; 

    var end = document.getElementById("end").value; 
    var request2 = { 
    origin:start2, 
    destination:end, 
    travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

    directionsService2.route(request2, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
    directionsDisplay.setDirections(response); 
    distance2Input.value = Math.round(response.routes[0].legs[0].distance.value/1609.344); 
    displayExpenses(response); 
      } 
     }); 

    function displayExpenses(response){ 
    var mileageCost = Math.round(((response.routes[0].legs[0].distance.value/1609.344)-75)+100); 

    var derbyDistance = distance1Input.value; 
    var londonDistance = distance2Input.value; 

    if (derbyDistance < 75) { 
     MileageInput.value = 'FREE'; 
    } 
    else if (londonDistance < 75) { 
     MileageInput.value = 'FREE'; 
    } 
    else { 
     MileageInput.value = 'You will be charged expenses'; 
    } 
    } 
} 

WorkingFiddle

1

由於您的計算似乎工作右側與文本輸入似乎是正確的更新,我認爲這可能是一個在最後的if聲明中出現問題。您正在比較整數(75)與文本輸入的value,該文本輸入爲string

嘗試使用parseInt()避免這些問題:

if (parseInt(derbyDistance) < 75) { 
    MileageInput.value = 'FREE'; 
} 
else if (parseInt(londonDistance) < 75) { 
    MileageInput.value = 'FREE'; 
} 
else { 
    MileageInput.value = 'You will be charged expenses'; 
} 
1
var mileageCost = Math.round(((response.routes[0].legs[0].distance.value/1609.344)-75)+100); 

在瀏覽器控制檯,我得到response is undefined錯誤。

因爲

directionsService2.route(request2, function(response, status) { 
if (status == google.maps.DirectionsStatus.OK) { 
directionsDisplay.setDirections(response); 
distance2Input.value = Math.round(response.routes[0].legs[0].distance.value/1609.344); 
     } 
    }); 

//mileage cost 
var mileageCost = Math.round(((response.routes[0].legs[0].distance.value/1609.344)-75)+100); 

你想的路線()函數外部訪問響應

相關問題