我正在从我的 index.html 文件中调用一个函数。该函数在我在 html 中引用的 javascript 文件中定义。但是,返回值始终是未定义的。当我调试时,我可以看到返回字符串中的值。
以下是 index.html 中的代码
<script type="text/javascript">
function readQueryStringparam(name)
{
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if (results == null)
return "";
else
return results[1];
}
function getDiDataUrlPrefix()
{
diDataUrlPrefix = diGlobal.instanceInfo.getDiDataUrlPrefix();
//alert(diDataUrlPrefix);
sbu = readQueryStringparam('sbu');
appid = readQueryStringparam('appid');
if (sbu.length > 0)
{
sbu = sbu.trim();
CreateChart(diDataUrlPrefix,sbu,0,appid);
}
else if (appid.length > 0)
{
sbu = GetSBUForApplication(appid);
CreateChart(diDataUrlPrefix,0,0,appid);
}
}
</script>
我得到了 url 中提供的参数的值以及 diDataUrlPrefix。
以下是 javascript 文件中的代码:
function GetSBUForApplication(appid)
{
setTimeout(function() { }, 10000);
var string;
var file = diDataUrlPrefix + "/oss/csvs/Consolidated_RAG.csv";
d3.text(file, function(datasetText)
{
parsedCSVapp = d3.csv.parseRows(datasetText);
if (appid >0)
{
parsedCSVapp = parsedCSVapp.filter(function(row)
{
//alert(parsedCSVapp);
return row[0] == appid
})//parsed fileter ends here
returnstring = parsedCSVapp[0][4];
}
})
return returnstring;
}
但是 sbu 的值始终未定义。但是我可以在 parsedCSVapp 中看到值。csv 文件如下所示:
Application_Id,Application Name,Status,Name,Business Unit 200039,DEALING,RED,Marc Begun,Financial&Risk 200070,NGTX,RED,Marc Begun,Financial&Risk 200097,WORLD-CHECK,RED,Graham Fisher,Financial&Risk 200009,BOARDLINK,RED,Jennifer西蒙,财务与风险 200088,汤姆逊一号,RED,Jonathan Weinberg,财务与风险 200037,DATASTREAM,RED,Ian Brocklehurst,财务与风险 200044,EIKON,RED,Olivier Martin,财务与风险 200011,协作,RED,Frank Tarsillo,财务与风险