0

在这里,我有两个功能:updateTooltipContentdistance.

当我尝试调用它时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 回答