前提・実現したいこと
javascriptとhtmlでサーバーに上げたcsvファイルを読み込み→jsでhtmlを生成するというシステムを開発しています.
csvファイルのデータを読み込んで配列(item)に入れた後,その配列(item)を呼び出すのにalertを2回経由しないと配列の中身が0という状態になってしまいます.
該当のソースコード
<body> <form name = "question"> <script langage="javascript"> //2回目のalert,ここできちんと数が出るのですが1回目のalertが無いと0になります.また,alertが2つ無い時はその下のfor文内のitemの中身も無い状態です alert("2 "+item.length); for(i in item){ Write(item[i],i); //html生成する関数に情報を飛ばします } </script> </form> </body> ### 試したことjavascript
1<head> 2//html内に記入しています 3<script langage="javascript"> 4var item = new Array; 5function csv_array(data) { 6 var dataString = new Array; 7 var dataArray = new Array; 8 9 dataString = data.split('\n'); 10 for(var i = 0; i < dataString.length; i++){ 11 dataArray[i] = dataString[i].split(','); 12 item[i] = new Item(dataArray[i]);//Item関数にそれぞれの情報を飛ばします,ここで定義しているitem配列とは別です 13 } 14 15} 16 17function getCsvData(dataPath) { 18 const request = new XMLHttpRequest(); 19 request.open('GET', dataPath, true); 20 request.addEventListener('load', (event) => { 21 var response = event.target.responseText; 22 csv_array(response); 23 }); 24 request.send(); 25} 26getCsvData('../test_1.csv'); 27 28//1回目のalert,実行すると0と出ます 29alert(item.length); 30 31</script> 32</head> 33//htmlの記述が挟まります 34 35
getCsvdataやcsv_arrayファンクションでreturnを付けたりしてみたのですが,値が返って来ませんでした.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。