Вызов функции JavaScript в цикле
У меня есть скрипт геозоны, который я использую на странице cfm:
<cfscript>
function getDistance(loclat, loclon, fencelat, fencelon, units = 'kilometers')
{
// earth's radius. Default is miles.
var radius = 3959;
if (arguments.units EQ 'kilometers' )
radius = 6371;
else if (arguments.units EQ 'meters')
radius = 6371393;
else if (arguments.units EQ 'feet')
radius = 20903520;
var toRad = pi() / 180;
var dLat = (fencelat-loclat) * toRad;
var dLon = (fencelon-loclon) * toRad;
var a = sin(dLat/2)^2 + cos(loclat * toRad) * cos(fencelat * toRad) * sin(dLon/2)^2;
var c = 2 * createObject("java","java.lang.Math").atan2(sqr(a), sqr(1-a));
return radius * c;
}
</cfscript>
Затем я запрашиваю свою таблицу геозон и выходные списки для тех записей, где геозоны были установлены для конкретного устройства. Когда запрос геозоны возвращает несколько записей, cfoutput
зацикливает эти записи и как код внутри cfoutput
вызывает функцию js Я получаю сообщение об ошибке, сообщающее, что функция была вызвана 2 раза в одном шаблоне.
Я "предполагаю", что решение состоит в том, чтобы поместить саму функцию скрипта внутри cfoutput
и сделайте имя функции уникальным, добавив для каждого идентификатора записи идентификатор записи. Это правильное решение?
Если это так, у меня вопрос, как я могу динамически добавить идентификатор записи к имени функции в cfscript? Например:
function getDistance#recid#(loclat, loclon, fencelat, fencelon, units = 'kilometers')
Затем, когда я вызываю значение функции, выведите
<cfif #fence_meter_radius# gt #getDistance(loclat, loclon, latitude, longitude, 'kilometers')#>
Я приветствую любую помощь с вышеуказанным.