前回書いたxmlを使ったページについてここでサンプルを示す。
まずはhtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="./css/style.css"> <script type="text/javascript" src="./js/jquery.js"></script> <script type="text/javascript" src="./js/xmljq.js"></script> <title></title> </head> <body> <div id="wrap"> <aside> <h2>部活動記事一覧</h2> <ul class="itiran"> </ul> </aside> <article> </article> </div> </body> </html> |
いたってシンプル。asideの一覧すなわちulのところに見出しを出力して、そこにオンクリックでarticlのところに表示するというもの。
ここはデータが何もなくていい。
そして、スクリプト。以下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
function xmlpreLoad(){ $(".itiran").html(""); $.ajax({ url:'xml/data.xml', type:'get', dataType:'xml', timeout:1000, success:parse_xml }); } function parse_xml(xml,status){ if(status!='success')return; $(xml).find('row').each(disp); } function disp(){ //各要素を変数に格納 var $no = $(this).find('no').text(); var $title = $(this).find('title').text() //HTMLを生成 $('<li onclick="xmlLoad('+$no+')">'+$title+'</li>' ).appendTo('.itiran'); } $(function(){ xmlpreLoad(); }); function xmlLoad(index){ $("article").html(""); $.ajax({ url:'xml/data.xml', type:'get', dataType:'xml', timeout:1000, success:function parse_xml(xml,status){ if(status!='success')return; var data = $(xml).find('row'); var no = index-1; var $date = data.find('date').eq(no).text(); var $title = data.find('title').eq(no).text(); var $img = data.find('img').eq(no).text(); var $text = data.find('text').eq(no).text() //HTMLを生成 $('<h1>'+$title+'</h1>'+ '<p class="date">'+$date+'</p>'+ '<img src="'+$img+'"& gt;'+ '<p>'+$text+'</p>' ).appendTo('article'); } }); } |
まず、function xmlpreLoad()で見出しに必要な要素をつかまえて、htmlを繰り返し生成する。これでasideの見出しができる。
次は見出しがonclickされた時に実行されるスクリプトfunction xmlLoad(index)だ。
実はここがよくわかっていない小生が苦労したところ。
indexを引数にして、ここから1を引いた数を変数noに代入して、それを変数の順番としてeqで取り出す。
そうするとクリックされたデータを取得できる。これでhtmlを生成するというわけだ。
xmlのデータは例のエクセルからMr.DataConverterを使って作ったものだ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<?xml version="1.0" encoding="UTF-8"?> <rows> <row> <no>1</no> <date>2016.07.23</date> <title>ペンギン部全国大会準優勝</title> <img>images/sample01.jpg</img> <text>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</text> </row> <row> <no>2</no> <date>2016.06.23</date> <title>グランドキャニオン部全国大会準優勝</title> <img>images/sample02.jpg</img> <text>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</text> </row> <row> <no>3</no> <date>2016.05.23</date> <title>コアラ部全国大会準優勝</title> <img>images/sample03.jpg</img> <text>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</text> </row> <row> <no>4</no> <date>2016.04.23</date> <title>クラゲ部全国大会準優勝</title> <img>images/sample04.jpg</img> <text>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</text> </row> </rows> |
こうするとユーザーがなれたエクセルでデータをつくれば、ウェブページに表示できる。これは便利でしょ。
もちろんいろいろな応用が効きますね。たとえば商品一覧を作るだとか。
あとはhtmlとデザインのcss次第です。
サンプルは以下。表示されている文字列をクリックしてみてください。
http://ogu-tec.net/test/webtestxml04/