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

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

新規登録して質問してみよう
ただいま回答率
85.47%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

2回答

326閲覧

CSVで読み込んだテキストデータをページによって表示件数を変えたい。

yukalino

総合スコア4

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2023/11/21 06:20

実現したいこと

トップページとニュース一覧ページページに表示するテキスト情報をCSVで作成し、jquery.csv.jsを使って読み込んでいます。
そのデータを参照の上、トップページは上から3件、ニュース一覧ページは全件表示をしたいと考えております。
hoge.com/ …上から3件表示
hoge.com/news/ …全件表示

御知恵を拝借いただければと思います

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

まずはトップページ用にfor文の中に ifで分岐を作成したのですが正しく表示がされていません。

該当のソースコード

Javascript

1$(function(){ 2 //news CSV読み込み 3 var target = '#news__list'; 4 var csvList; 5 var count = 1; 6 var insert = ''; 7 $.ajax({ 8 url: 'news.csv', 9 success: function(data) { 10 11 // csvを配列に格納 12 csvList = $.csv.toArrays(data); 13 14 // 挿入するHTMLを作成 15 for (var i = 1; i < csvList.length; i++ ) { 16 if(count < 4){ 17 var cat = csvList[i][0]; 18 var title = csvList[i][1]; 19 var date = csvList[i][2]; 20 var text = csvList[i][3].replace(/\n/g,'<br>'); 21 var url = csvList[i][4]; 22 insert += '<dl class="' + cat +'"><dt><span class="title">' + title + '</span><span class="date">' + date + '</span></dt>'; 23 insert += '<dd><p class="news__text">' + text + '</p>'; 24 if(url === undefined){ 25 insert += ''; 26 } else{ 27 insert += '<p class="news__link"><a href="' + url + '" target="_blank">' + url + '</a></p>'; 28 } 29 insert += '<p class="news__cat">' + cat + '</p></dd></dl>'; 30 31 $(target).append(insert); 32 count++; 33 } 34 35 } 36 37 //news アコーディオン 38 $('#news__list dl dt').click(function(){ 39 $(this).toggleClass('open'); 40 $(this).next('dd').slideToggle(); 41 }); 42 } 43 }); 44});

html

1<div id="news__list"> 2</div>

csv

1Category,title,date,text,link 2"カテゴリ1","見出し","日付","本文","URL" 3"カテゴリ2","見出し","日付","本文","URL" 4"カテゴリ3","見出し","日付","本文","URL" 5"カテゴリ4","見出し","日付","本文","URL" 6"カテゴリ5","見出し","日付","本文","URL" 7"カテゴリ6","見出し","日付","本文","URL" 8"カテゴリ7","見出し","日付","本文","URL" 9"カテゴリ8","見出し","日付","本文","URL" 10"カテゴリ9","見出し","日付","本文","URL"

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

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

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

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

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

Lhankor_Mhy

2023/11/21 07:50

$.csv というのは一般的なjQueryのメソッドではないと思いますが、何らかのライブラリを使っていますか?
guest

回答2

0

ベストアンサー

スコープの広い変数を使っているので、前のループのが残っている感じです。
現状のコードを最大限生かすとこんな感じでは。

js

1$(target).append(insert); 2insert = ''; // これを忘れている 3count++;

さらにいいのは、スコープを狭くすることです。

投稿2023/11/21 07:57

編集2023/11/21 07:59
Lhankor_Mhy

総合スコア36134

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

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

yukalino

2023/11/21 08:32

コメントありがとうございます。 insert = ''; を追加することでループが希望通りのものになりました。 もしお時間に余裕がありましたら、スコープを狭くした記述例などを教えていただければ嬉しいです。
Lhankor_Mhy

2023/11/22 00:03

for ループの中で let で変数宣言すると、ループごとのスコープになりますので、変数にヌル文字を代入してクリアする必要がなくなるはずです。
guest

0

「hoge.com/」と「hoge.com/news/」ではページが違うのですから、呼び出し方を変えるだけだと思いますが?

投稿2023/11/21 07:04

yambejp

総合スコア114883

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

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

yukalino

2023/11/21 08:06

コメントありがとうございます。 1ファイル内でif等でうまく出し分けができればと思うのですが難しいでしょうか?
yambejp

2023/11/21 08:29

hoge.com/」と「hoge.com/news/」が1ファイルという状況がわからないのですが、htmlは別で、jsを1つにまとめたいということですか? location.hrefをつかって場合分けするとかでしょうか?
yukalino

2023/11/21 08:34

回答が分かりづらくて申し訳有りません。 htmlは別ですがjsは1ファイルでということです。 var page = location.href; if(page.match('news')){~} という形で振り分けできそうです。ありがとうございます。
yambejp

2023/11/21 08:39

if(/news\/?/.test(page)){ みたいな方が良いかもしれません 「news」もしくは「news/」で終わるURL
yukalino

2023/11/21 10:51

ありがとうございます。 参考にいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問