
javascriptでCSVを読み込み表示する方法を探しています。
<div id="hoge">
<ul class="hogehoge">
<li><a href="1行目の1つ目のデータ">1行目の2つ目のデータ</a></li>
<li><a href="2行目の1つ目のデータ">2行目の2つ目のデータ</a></li>
・
・
・
</ul>
</div>
で、ulに囲まれた部分をjavascriptで生成させたいのですが・・・
(ulのところのCSS指定は、idではなく、classにしたいです)
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
以下、要求仕様に合わない部分は適宜書き換えてください。
(※全角空白は半角空白に置換)gist: 606500 - (rfc4180.js) - GitHub
http://gist.github.com/606500
---
var csv;
csv = new RFC4180(true);
csv.fileToArray('http://example.com/test.csv', function (array) {
var doc, ul, li, a, textNode;
doc = document;
ul = doc.createElement('ul');
li = doc.createElement('li');
a = li.appendChild(doc.createElement('a'));
textNode = a.appendChild(doc.createTextNode(''));
for (var i = 0, l = array.length; i < l; i++) {
a.href = array[i][0];
textNode.nodeValue = array[i][1];
ul.appendChild(li.cloneNode(true));
}
doc.body.appendChild(ul);
});
---
No.3
- 回答日時:
まず、javascriptにクライアント側のファイルを入出力する機能はありません。
読み込むなら、csvファイルをサーバー側に置き、AJAX(XMLHttpRequest)で
テキストデータとして読み込みます。
AJAXレスポンスデータ(テキスト型式)をカンマと改行文字で分割して、
配列変数にいったん格納し、DOM APIのループ処理でli要素を作成しつつ
ターゲットの<ul>の子要素として追加していけばよいかと思います。
データを予めCSV型式からJSON型式にしておけば、分割・格納の処理が
省けますから、もうちょっと楽になります。
JSON型式↓
{data:[
['1行目の1つ目のデータ','1行目の2つ目のデータ'],
['2行目の1つ目のデータ','2行目の2つ目のデータ'],
....
['n行目の1つ目のデータ','n行目の2つ目のデータ']
]};
となってれば、
json.data[0][0] //1行目の1つ目のデータ
json.data[0][1] //1行目の2つ目のデータ
json.data[1][0] //2行目の1つ目のデータ
json.data[1][1] //2行目の2つ目のデータ
....
json.data[n][0] //n行目の1つ目のデータ
json.data[n][1] //n行目の2つ目のデータ
ですから、HTML生成の部分は、
function listadd(json){
var ul = document.querySelector("ul.hogehoge");
for(var i=0;i<json.data.length;i++){
var li = document.createElement("li");
var a = document.createElement("a");
a.href = json.data[i][0];
a.appendChild(document.createTextNode(json.data[i][1]));
li.appendChild(a);
ul.appendChild(li);
}
}
ajaxの部分は、
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","xxx.json",true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
var json = eval("("+xmlhttp.responseText+")");
listadd(json);
}
}
でよいかと。
※古いIEの時は、
document.querySelectorとか new XMLHttpRequest()
を適時書き換えてくだされ。
No.1
- 回答日時:
ajax cvs あたりをキーにぐぐってみれば、ヒントがいろいろ見つかることでしょう。
たいていのものは、cvsを表形式に表示したり、データをソートしたり、検索するなどのtableデータを対象とする操作になっていると思います。
ご質問の場合は、cvsといってもそのような表ではなさそうなので、前半の読込みだけを利用して、表示するのにはtableの要素の代わりにli要素を生成すればよろしいかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonのDjangoでHTML内で変数...
-
Jqueryでclickさせる方法が分か...
-
同一ページ内で、任意の文字列...
-
MAX関数を使ってからLEFT JOIN...
-
画像をクリックすると音が鳴り...
-
【CSS】floatで左右に並べた...
-
css固定したフッターが本文と重...
-
javascriptテキストBOX色を元に...
-
CSS <div>の入れ子が反映さ...
-
eclipseでcssを使うためには?
-
Slick.jsのオプションrtlについて
-
javascriptでURLにマウスオーバー
-
JSPでの画像ファイル表示
-
スクロール可能なチェックボックス
-
Jquery 親要素で順番入れ替え
-
Javascript初心者|jQueryの.va...
-
外部ファイルにしたら文字化け...
-
オンマウスで流れる文字
-
libjpegライブラリの使い方につ...
-
デフォルト非表示にしたい。【t...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
どの<li><a> が押されたか判別...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
jQueryスライドメニューの初歩...
-
jQueryのeqで最後からn番目以降...
-
javascriptでフォーカスを当て...
-
<li></li>の数を制限
-
【javascript で動的に a タグ...
-
JS <a></a>タグ内のリンク先ア...
-
『JavaScript Accordion』について
-
カレントページ aタグではなく...
-
jQueryプラグインのメガドロッ...
-
jQueryで記事を6列表示にした...
-
大至急!!HPビルダー16の専...
-
jquery 親要素以外の取得
-
下記のようにクリックすると、...
-
jQueryでネスト構造の<li>がク...
-
ページの上下に同じタブメニュ...
-
jQueryについて質問なのですが...
おすすめ情報