[英]How do I pass an Array vlaue out of a function using Javascript
我絕對是JavaScript新手,但是我正在從事一個私人項目。 簡而言之,我將讀取一些平面文件(.csv / .txt格式)並將值傳遞給HighCharts。
我幾乎可以處理所有事情(我認為)。
我唯一無法得到的就是將文件讀入數組,然后從中取出我需要的位。 我可以使用腳本將文件直接傳遞到Highcharts中,但是它不夠靈活,無法滿足我的需求。
反正下面的Livedata.txt包含
1370576580,酸度,pH,8.20,ORP,mV,366.99,ReefTemp,DegC,25.1,RoomTemp,DegC,21.7,HeaterTemp,DegC,25.1
(EPOCH,然后是5個探針的3個數據點(度量,單位,值)的組)
我的腳本片段是:
var $livedata = new Array();
var currentph;
$.get('livedata.txt', function(data){
livedata = data.split(',');
});
currentph = $livedata[3];
document.write("<b>currentph is </b>=>"+currentph+"<br>");
像這樣var currentph = undefined
如果我將document.write語句移到$ .get中(這是一個函數嗎?),它確實包含值8.20
此外,如果我將currentph聲明為8.20,則腳本的其余部分都可以接受此值。
任何幫助/建議都將不勝感激。
我將聲明16個變量,其中1個用於數組中的每個值(只是為了稍后閱讀腳本)。
干杯
因為$.get
是異步的。 當您調用currentph = $livedata[3];
此后,響應尚未到達。 這就是為什么在將document.write
語句移至$.get
的回調函數中時起作用的原因。 還要檢查您的錯字,在livedata
之前缺少$
。 如果需要進行同步調用,可以嘗試使用$.ajax
和async:false
$.ajax(
{
url:'livedata.txt',
async:false,
success: function(data){
$livedata = data.split(',');
}
}
);
livedata
$
。 $livedata
將為空數組; b)如果加載了“ livedata.txt”,但沒有至少4個逗號分隔的值,則$livedata[3]
將是未定義的。 您可能需要使用以下代碼重新編寫代碼:
var $livedata = []; // array literal notation
$.get('livedata.txt', function(data){
$livedata = data.split(',');
});
// in case array does not have an index 3, set value to 'not found'
var currentph = $livedata[3] || 'not found';
document.write("<b>currentph is </b>=>"+currentph+"<br>");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.