現在下記のようなコードで、特定のフォルダの中にあるファイルをfor文を用いて取得・HTML上にフォルダ名を表示しようとしています。
特定のフォルダの名前はfolderListの配列にある「りんご」と「みかん」の2つです。
このコードを動かしてみると画面上には「みかん」「みかん」と、「りんご」が表示されずに「みかん」が2個表示されてしまいます。
繰り返し処理の変数iを調べるため、コード内の2箇所にアラートを付けて(「最初のアラート」と「2つ目のアラート」)確認してみました。すると画面に出た順序と内容は以下のようになりました。
(1)「最初のアラート0」
(2)「最初のアラート1」
(3)「2つ目のアラート1」
(4)「2つ目のアラート1」
この順序と動きを以下のようになるようにしたいのですが、どのようにコードを書き直せば良いでしょうか。よろしくお願いいたします。
(1)「最初のアラート0」
(2)「2つ目のアラート0」
(3)「最初のアラート1」
(4)「2つ目のアラート1」
JavaScript
1var folderList = ['りんご', 'みかん']; 2localStorage.setItem('folderList', folderList); 3 4for (var i = 0; i < folderList.length; i++){ 5 6 alert('最初のアラート' + i); 7 sessionStorage.setItem('i', i); // 繰り返しカウントを保存 8 9 var fileName = 'file.txt'; 10 var folderUrl = cordova.file.documentsDirectory + folderList[i] + '/'; 11 var folderList = localStorage.getItem('folderList'); 12 13 window.resolveLocalFileSystemURL( folderUrl , 14 function getDirectoryEntry( directoryEntry ) { 15 directoryEntry.getFile( fileName, null, 16 function readFile( fileEntry ) { 17 fileEntry.file( 18 function( file ) { 19 var reader = new FileReader(); 20 reader.onloadend = function() { 21 var settings = this.result; 22 settings = JSON.parse(result); 23 24 var persistentUrl = localStorage.getItem('persistentUrl'); 25 var folderList = localStorage.getItem('folderList'); 26 27 var i = sessionStorage.getItem('i'); 28 i = Number(i); 29 alert('2つ目のアラート' + i); 30 31 $('#div').append( 32 '<p>' + folderList[i] + '</p>' 33 ); 34 35 }; 36 reader.readAsText(file); 37 }, 38 function fail(e) { 39 // エラー処理 40 } 41 ); 42 }, 43 function fail(e) { 44 // エラー処理 45 } 46 ); 47 }, 48 function fail(e) { 49 // エラー処理 50 } 51 ); 52 53} 54
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/06 07:06
2017/12/06 07:31