-2

JavaScript に小さな if/else 問題があります。ロジックが見えない…

この関数は、2 つの日付が存在するかどうかを確認し、存在しない場合はアラートを発します。すべてがOKなら、そう言うはずです...

function update_booking() {
    //from_date = The date of arrival
    //to_date = The date of departure

    var alert = ""; //reset alerts

    //get variables from booking form input
    var from_date = new Date(document.getElementById('from').value);
    var to_date = new Date(document.getElementById('to').value);

    //if arrival and departure date is present
    if(from_date && to_date) {
        var alert = "Everything is OK";
    }

    //if one or two dates are missing
    else {
        //if arrival and departure dates are missing
        if(from_date == 'undefined' || to_date == 'undefined'){
            var alert = "Arrival date and departure date are missing";  
        }

        //if from_date is missing update with value from to_date
        if(from_date == 'undefined') {
            var alert = "Arrival date are missing";
        }

        //if to_date is missing update with value from from_date
        if(from_date == 'undefined') {
            var alert = "Departure date are missing";
        }
    } //end else if one or more date(s) missing

    //write alerts
    document.getElementById('alert').innerHTML = alert;
}
4

3 に答える 3

3

Date の値が無効な場合new Date(datestring)は、非数値 (NaN) のオブジェクトを返します。

たとえば、両方ともNaN のオブジェクトを返しますが、そうではありnew Date("")ません。new Date(" ")new Date("04-29-2013")

したがって、次のように検索undefinedを NaNに変更することをお勧めisNaN()します。

if(isNaN(from_date) || isNaN(to_date)){
于 2013-04-29T18:10:58.737 に答える
1

new Date戻りませんundefined

> new Date("")
Invalid Date

だからあなたのコードを見て

if(from_date == 'undefined' || to_date == 'undefined'){

そのif文には決して入りません。

日付が有効かどうかを確認するには、getTime() で isNaN を使用します。

于 2013-04-29T18:03:35.013 に答える