簡體   English   中英

如何使用Javascript將數組vlaue從函數中傳遞出去

[英]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之前缺少$ 如果需要進行同步調用,可以嘗試使用$.ajaxasync:false

$.ajax(
     {
       url:'livedata.txt', 
       async:false,
       success: function(data){
         $livedata = data.split(',');
       }
    }
);
  1. 您忘記在變量livedata $
  2. 您的代碼的其他問題是: a)如果從未加載“ livedata.txt”,則$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM