0

ここには と の 2 つの関数がupdateTooltipContentありdistanceます。

呼び出そうとするとdistance(latt)updateTooltipContent値が返されません。なぜだかわかりません

コード:

function updateTooltipContent() {
    var fullt = $(this).width();
    var startt = $(this).position().left + 200;
    var endt = fullt + startt;
    var latt = $(this).attr("lat");
    return "Spending: " + formatTime(fullt) +  
     "</br>  Between:(" + formatTime(startt) + " and " + 
      formatTime(endt) + ") </br>" + distance(latt) + "km";
}
});

function distance(latt) {
    var bigArray = nArray();
    var dis = 0.00;
    for (var x = 0; x < bigArray.length; x++) {
        if (bigArray[x].lat == latt) {
            dis = bigArray[x].DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION;
            break; // no point doing anymore loops as we've found the answer
        }
        return dis;
    }
}

このコードはうまく機能しますが、コードの一部を関数に入れようとすると機能しません: WORKING CODE WITHOUT FUNCTION DISTANCE()

function updateTooltipContent() {
    var fullt = $(this).width();
    var startt = $( this ).position().left + 200;
    var endt = fullt + startt;
      var latt = $(this).attr("lat");
      var bigArray = nArray();
var distance = 0.00;

for(var x = 0; x < bigArray.length; x++)
{
    if(bigArray[x].lat == latt)
    {
        distance = bigArray[x].DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION;
        break; // no point doing anymore loops as we've found the answer
    }        
}
      return "Spending: "+formatTime(fullt) + "</br>  Between:("+formatTime(startt) + " and " +formatTime(endt)+") </br>" + distance.toFixed(2) + "km";
    }
});
4

1 に答える 1

1

bigArray[x].lat == latt になると、ステートメント break が呼び出され、for ループはすぐにスキップされます。return ステートメントはループ内にとどまるため、もちろん何も返されません。

この問題を解決するには、return ステートメントを for ループの外に移動するだけです。

于 2013-08-05T08:21:58.163 に答える