質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3397閲覧

jQueryで複数のcsvを読み込んでページ上に表示させる

saisolla

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/26 08:29

編集2020/04/26 08:48

前提・実現したいこと

結論
javascriptでcsvを複数読み込んでページ上に表示させる。

説明
csvファイルを読み込んで、ページ上で表示させたいのですが、読み込みたいcsvが複数あります。
また、1つのcsvファイルは固定で読み込みますが、もう1つのcsvファイルは、選択しているラジオボタンによって読み込むファイルを変更させたいです。
・①list.csv → 常時読み込んで表示させる内容
・②form1.csv, form2.csv … → ラジオボタンの項目によって読み込む内容

上記それぞれを読み込むためのjsファイルを作成しています。

前提
アップロードするサーバーではphpなどは使用できない
ページ内で検索フォームと検索結果を両方表示させる必要がある

発生している問題・エラーメッセージ

①だけ、もしくは②だけであればそれぞれ読み込んで動作するのですが、
①②両方を読み込んだ際に、反応しなくなります。

csvを読み込む記述とhtmlを生成する記述が紐づいていないためかと思うのですが、
同様の内容の質問が見つからずに困っています。

該当のソースコード

①用のjsソースコード

javascript

1//一覧表示用 2function readCsv(data) { 3 var target = '.list'; //csvを表示するところ 4 var csv = $.csv.toArrays(data); //csv読み込み 5 var insert = ''; //作るhtmlを入れるやつ 6 for (var i = 0; i<csv.length;i++){ 7 //htmlの要素 8 insert += ' <div class="item-list" data-no1="' + csv[i][0] + '" data-no2="' + csv[i][1] + '">'; 9 insert += ' </div>'; 10 } 11 //作ったhtmlを挿入 12 $(target).append(insert); 13} 14 15 //csvを読み込む 16 $(document).ready(function(){ 17 var csvfile = 'list.csv'; 18 $.get(csvfile, readCsv, 'text'); 19 }); 20 21//読み込みが完了したら 22$(document).ajaxStop(function() { 23 24});//読み込みが終わったらここまで

②用のjsソースコード

javascript

1//絞り込み項目用 2function readCsv(data) { 3 var target2 = '.form'; //csvを表示するところ 4 var csv2 = $.csv.toArrays(data); //csv読み込み 5 var insert2 = ''; //作るhtmlを入れるやつ 6 for (var i = 0; i<csv2.length;i++){ 7 insert2 += ' <div class="box">' 8 insert2 += ' <span class="label">' + csv2[i][0] + '</span>' 9 insert2 += ' <ul>' 10 for (var j = 1;j<csv2[i].length;j++){ 11 insert2 += ' <li><label><input type="checkbox" name="' + csv2[i][j] + '" value="' + csv2[i][j] + '">' + csv2[i][j] + '</label></li>' 12 } 13 insert2 += ' </ul>' 14 insert2 += ' </div>' 15 } 16 //作ったhtmlを挿入 17 $(target2).append(insert2); 18 19 //csvを読み込む 20 $(document).ready(function(){ 21 $('input[name="no1"]').change(function() { 22 var val = $(this).val(); 23 if (val == 'テストA') { 24 var csvfile2 = 'form1.csv'; 25 $.get(csvfile2, readCsv, 'text'); 26 } else if (val == 'テストB') { 27 var csvfile2 = 'form2.csv'; 28 $.get(csvfile2, readCsv, 'text'); 29 } 30 $(".form").empty(); 31 }); 32 }); 33} 34 35//読み込みが完了したら 36$(document).ajaxStop(function() { 37});//読み込みが終わったらここまで

htmlの記述

html

1 <section> 2 <div class="wrap"> 3 <p class="sub-ttl"検索</p> 4 <form class="search-form"> 5 <div class="box"> 6 <span class="label">1つめの項目</span> 7 <ul> 8 <li><input type="radio" name="no1" value="テストA" id="no1"><label for="no1">テストA</label></li> 9 <li><input type="radio" name="no2" value="テストB" id="no2"><label for="no2">テストB</label></li> 10 </div> 11 </div> 12 <div class="form"> 13 </div> 14 </form> 15 </section> 16 17 <section> 18 <div class="list"> 19 </div> 20 </section>

※①②のjsコードはそれぞれ別ファイルにして読み込んでいます。

試したこと

・jsファイルを1つにまとめる→読み込まれるcsvファイルが同一のものになってしまった。

javascript

1// csv読み込み関数 2function readCsv(data) { 3 //検索結果用 4 var target = '.list'; //csvを表示するところ 5 var csv = $.csv.toArrays(data); //csv読み込み 6 var insert = ''; //作るhtmlを入れるやつ 7 for (var i = 0; i<csv.length;i++){ 8 //htmlの要素 9 insert += ' <div class="item-list" data-no1="' + csv[i][0] + '" data-no2="' + csv[i][1] + '">'; 10 insert += ' </div>'; 11 } 12 //作ったhtmlを挿入 13 $(target).append(insert); 14} 15 16 //絞り込み項目用 17 var target2 = '.form'; //csvを表示するところ 18 var csv2 = $.csv.toArrays(data); //csv読み込み 19 var insert2 = ''; //作るhtmlを入れるやつ 20 for (var i = 0; i<csv2.length;i++){ 21 insert2 += ' <div class="box">' 22 insert2 += ' <span class="label">' + csv2[i][0] + '</span>' 23 insert2 += ' <ul>' 24 for (var j = 1;j<csv2[i].length;j++){ 25 insert2 += ' <li><label><input type="checkbox" name="' + csv2[i][j] + '" value="' + csv2[i][j] + '">' + csv2[i][j] + '</label></li>' 26 } 27 insert2 += ' </ul>' 28 insert2 += ' </div>' 29 } 30 //作ったhtmlを挿入 31 $(target2).append(insert2); 32 33 //csvを読み込む 34 $(document).ready(function(){ 35 //検索結果用 36 var csvfile = 'list.csv'; 37 $.get(csvfile, readCsv, 'text'); 38 39 $('input[name="no1"]').change(function() { 40 var val = $(this).val(); 41 if (val == 'テストA') { 42 var csvfile2 = 'form1.csv'; 43 $.get(csvfile2, readCsv, 'text'); 44 } else if (val == 'テストB') { 45 var csvfile2 = 'form2.csv'; 46 $.get(csvfile2, readCsv, 'text'); 47 } 48 $(".form").empty(); 49 }); 50 }); 51 52//読み込みが完了したら 53$(document).ajaxStop(function() { 54 55});//読み込みが終わったらここまで

・下記ページなどを参考に修正を試みましたが②のcsvの切り替えの記述がわからず断念
https://teratail.com/questions/183007

それぞれのcsvが正しく読まれるにはどのように修正しなければいけないのか、お分かりになれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2020/04/26 08:39

①②を一つにまとめたコードも動かなくても提示してもらった方が、どこで問題が起きているか指摘しやすくなりますので、差し支えない範囲で提示してください。 単に回答者のやり方で回答を記述するよりも質問者さんが作りかけたコードの問題点を直して動くようになった方が質問者さんも納得しやすいですし、理解が深まると思います。
saisolla

2020/04/26 08:48

ありがとうございます。 1つにまとめて試した記述を 試したこと の部分に追記しました。
guest

回答1

0

ベストアンサー

readCsvが同一名なので後から追加したファイルのほうで上書きされます。

投稿2020/04/26 08:39

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saisolla

2020/04/26 08:50

ご回答ありがとうございます。 function readCsv(data) { ご回答をもとに、①を function readCsv(list) { ②を function readCsv(data) { にして試したのですが、うまくいきませんでした。 誤った場所であれば、正しい修正箇所をご教授いただけますでしょうか。
kei344

2020/04/26 09:03

関数名が変わっていませんよ。
saisolla

2020/04/26 09:23

ありがとうございます! ご教授いただいた関数名と、同様の関数名が記述されている箇所を修正したことで動作ができました! 単純な見落としですが、答えをいただかなければ当分悩んでいたと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問