Javascript 使用each中的函数值。.each函数的函数(jQuery)

Javascript 使用each中的函数值。.each函数的函数(jQuery),javascript,jquery,Javascript,Jquery,函数的以下部分应显示大量lat/lng坐标之间的距离。在下面的“console.log(dist)”部分之前,它工作得非常完美,但我无法从“dist”到每个html“I”中找出这个值 $(“.box”)。每个(函数(){ var latlng=$(this).find('.area').data('latlng').split(','); var lat1=latlng[0]; var lon1=latlng[1]; var lat2=固定位置(8); var lon2=固定位置(8); 距离(

函数的以下部分应显示大量lat/lng坐标之间的距离。在下面的“
console.log(dist)
”部分之前,它工作得非常完美,但我无法从“dist”到每个html“
I
”中找出这个值

$(“.box”)。每个(函数(){
var latlng=$(this).find('.area').data('latlng').split(',');
var lat1=latlng[0];
var lon1=latlng[1];
var lat2=固定位置(8);
var lon2=固定位置(8);
距离(lat1,lon1,lat2,lon2,“K”);//1){
dist=1;
}
dist=数学acos(dist);
dist=dist*180/Math.PI;
dist=dist*60*1.1515;//M=法定英里(默认)
如果(单位==“K”){dist=dist*1.609344;}//K=km
如果(单位==“N”){dist=dist*0.8684;}//N=海里
console.log(dist);//将
distance()
函数置于循环之外,让它返回计算值

function distance(lat1, lon1, lat2, lon2, unit) {
    if (lat1 === lat2 && lon1 === lon2) return 0;

    var radlat1 = Math.PI * lat1/180;
    var radlat2 = Math.PI * lat2/180;
    var theta = lon1-lon2;
    var radtheta = Math.PI * theta/180;
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    
    if (dist > 1) dist = 1;
    
    dist = Math.acos(dist);
    dist = dist * 180/Math.PI;
    dist = dist * 60 * 1.1515; // M = statute miles (default)
    if (unit === "K") { dist = dist * 1.609344; } // K = kilometers
    if (unit === "N") { dist = dist * 0.8684; } // N = nautical miles
    
    return dist;
}

$(".box").each(function() {
    var latlng = $(this).find('.area').data('latlng').split(',');
    var dist = distance(
        latlng[0],
        latlng[1],
        location_lat.toFixed(8),
        location_lon.toFixed(8),
        "K"
    );

    $(this).find('.area i').text(dist.toFixed(0)).append(" <em>km</em>");
});
功能距离(lat1、lon1、lat2、lon2、单位){
if(lat1==lat2&&lon1==lon2)返回0;
var radlat1=Math.PI*lat1/180;
var radlat2=数学PI*lat2/180;
varθ=lon1-lon2;
var radtheta=Math.PI*theta/180;
var dist=数学sin(radlat1)*数学sin(radlat2)+数学cos(radlat1)*数学cos(radlat2)*数学cos(radtheta);
如果(dist>1)dist=1;
dist=数学acos(dist);
dist=dist*180/Math.PI;
dist=dist*60*1.1515;//M=法定英里(默认)
如果(单位==“K”){dist=dist*1.609344;}//K=km
如果(单位==“N”){dist=dist*0.8684;}//N=海里
返回距离;
}
$(“.box”)。每个(函数(){
var latlng=$(this).find('.area').data('latlng').split(',');
var dist=距离(
latlng[0],
latlng[1],
固定位置(8),
固定位置(8),
“K”
);
$(this).find('.area i').text(dist.toFixed(0)).append(“km”);
});

Big-thx寻求帮助!你是对的,工作完美!如果我是对的,你的代码中只有两个小错误。“返回0;”必须是“{return 0;}”和“dist=1;”必须是“{dist=1;}”@Pepe不一定。
if(某物)return;
是完全有效的Javascript,这样的单行程序不需要大括号。如果您想编写它们,可以,但不是必需的。
...
distance(lat1, lon1, lat2, lon2, "K"); // <-- start calculate function

var display = $(this).find('.area');
$(display).find('i').html(dist.toFixed(0)).append(" <em>km</em>"); // <-- doesn´t work, because "dist" is not defined
function distance(lat1, lon1, lat2, lon2, unit) {
    if (lat1 === lat2 && lon1 === lon2) return 0;

    var radlat1 = Math.PI * lat1/180;
    var radlat2 = Math.PI * lat2/180;
    var theta = lon1-lon2;
    var radtheta = Math.PI * theta/180;
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    
    if (dist > 1) dist = 1;
    
    dist = Math.acos(dist);
    dist = dist * 180/Math.PI;
    dist = dist * 60 * 1.1515; // M = statute miles (default)
    if (unit === "K") { dist = dist * 1.609344; } // K = kilometers
    if (unit === "N") { dist = dist * 0.8684; } // N = nautical miles
    
    return dist;
}

$(".box").each(function() {
    var latlng = $(this).find('.area').data('latlng').split(',');
    var dist = distance(
        latlng[0],
        latlng[1],
        location_lat.toFixed(8),
        location_lon.toFixed(8),
        "K"
    );

    $(this).find('.area i').text(dist.toFixed(0)).append(" <em>km</em>");
});