• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:prototype.jsを利用して)

prototype.jsを利用してcsvファイルを読み込んでsafariで表示する方法

このQ&Aのポイント
  • prototype.jsを使用して、データバインドを利用せずにcsvファイルを読み込み、safariで表示する方法を教えてください。
  • 300件のレコードを3列のテーブルで表示するために、どのようにループさせれば良いですか?
  • 新しいAjaxリクエストを送信した後、onSuccess関数内で3回のループを試みても、テーブルが3列で表示されずに終了してしまいます。どうすれば3列で表示できますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

#1です。 先の回答をする時に確認してわかっていたんですが書くの忘れてました^^;。 タグの対応がおかしいです。(</table>で閉じるのが早い) tbl += "</tr></table>"; ↓ tbl += "</tr>"; tbl += "</table>";//追加(ループの外)

hajimete-san
質問者

お礼

steel_gray様、再度ありがとうございます。 無事出来ました。感謝です。 こうしてみるとちょっとしたことなんですね・・。 本当にありがとうございました。 また何かあったときはよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

var retu=0; の位置が違う。 もう一つ内側のループで初期化しないと、2回目からは既に「3」になってるのでwhileループを処理せず終わってしまいます。

hajimete-san
質問者

補足

steel_grayさん、書き込みありがとうございます。 ご指摘どおり、var retu=0;をwhile(retu<3){ の上行に移動させたところ、残りのレコードが表示されるようになりました。 これまた指摘された初期化がうまくいってないため、3列ではなく1列でループしてます。 恥の上塗りですみません、どのポイントで初期化すればうまく行くのでしょうか?? 初心者の僕の考えとして、 while(retu<3){ の「retu」が3のままになってるような気がします。 でも var retu=0; while(retu<3){ となっていれば、while(retu<3){ のループが終わった時点で var retu=0;で初期化されるのでは??と思ってしまいます。 それとも全く別のところを初期化しないといけないのでしょうか? 質問ばかりですみません。よろしくお願いします。 自分もがんばって自己解決できるよう色々試してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSVファイルからの読取について

    よろしくお願いします。 データバインドを利用し、CSVファイルにて画像名を記入し、それを 表示させるスクリプト例をこのカテゴリで拝見し、試してみました。 問題なく表示できたのですが、CSVファイルのレコード数分、どうしてもループして表示されます。レコード数分ループしないようにするには どこを注目すればよろしいでしょうか? 以下が参考して、若干手を加えたソースです。 ------------------------------------------------------------ <html> <head> <title>TEST CSV IN</title> </head> <body> <object id="TEST" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"> <param name="DataURL" value="sample.csv"> <param name="UseHeader" value="true"> </object> <script language="JavaScript"> <!-- document.writeln("<table border=1 DATASRC='#TEST'><tr>"); TEST.Reset(); var rs = TEST.recordset; var Cnt = 0; while (rs.EOF == false){ if(Cnt++ % 3 == 0 && Cnt > 0) document.writeln("</tr><tr>"); document.writeln("<td><img src=" + rs.fields(0) + "></td>"); document.writeln("<td>" + rs.fields(1) + "</td>"); document.writeln("<td>" + rs.fields(2) + "</td>"); rs.MoveNext; } document.writeln("</tr></table>"); --> </Script> </body> </html> -------------------------------------------------- CSVファイルの内容は以下 img,name,phone img/a01.jpg,a01,001-001 img/a02.jpg,a02,002-002 img/a03.jpg,a03,003-003 img/a04.jpg,a04,004-004

  • borderの指定方法

    var tbl = document.createElement("table"); var tbd = document.createElement("tbody"); var tr = document.createElement("tr"); var td = document.createElement("td"); td.appendChild(document.createTextNode("テストテーブル")); tr.appendChild(td); tbd.appendChild(tr); tbl.appendChild(tbd); DOMで書いたテーブルのTD要素のボーダーの指定方法で、下線だけ表示しないで枠をつけたいのですが、どのようにすればよいのでしょうか? どなたか教えてください。 よろしくお願いします。

  • n回繰り返し書き出す

    例えば、 <TABLE border=1> <TR> <TD></TD> </TR> </TABLE> このような表を表示させたい場合、JavaScriptで <SCRIPT language="JavaScript"> <!-- document.write("<TABLE border=1><TR>"); document.write("<TD></TD>"); document.write("</TR></TABLE>"); --> </SCRIPT> このようにすると可能だと思うのですが、 <TABLE border=1> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> </TABLE> このような場合や、あるいは <TD></TD> が20も30もあるような場合、最初の方法ですと、どうも非合理的に思えてなりませんし、 方法も絶対にあるようにも思えます。 このケースでいう、<TD></TD>をn回繰り返して表示させる。 というときには、どのように記述すればよいのでしょうか。 基本的なことを知らずに色々やってみているのですが、どうもわかりません。 おわかりになられる方、どうかご教授願います。

  • テーブル列の表示・非表示機能の追加

    <table border="0" id="tbl1"> <tr> <th>A1</td> <th>B1</td> <th colspan="2">C1</td> </tr> <tr> <td>aaa</td> <td>bbb</td> <td>ccc</td> <td>ddd</td> </tr> <tr> <td>aaa</td> <td>bbb</td> <td>ccc</td> <td>ddd</td> </tr> </table> というテーブルで、C1列(要はデータcccとdddの2列)を表示/非表示を行いたいです。 調べてみたところ、colspanが設定されている例がありませんでした。 お判りになる方、よろしくお願いします。

  • java scriptのwrite()の結果

    <script> document.write("<table border>"); document.write("<tr>"); for(i=0;i<3;i++){ document.write("<td>"+i+"</td>"); } document.write("</tr>"); document.write("</table>"); </script> 例えば上記のような Java Script を作ったとします。 Internet Explorer で実行すると表(HTMLの結果?)が表示されますが、 そうでなく 以下のようなHTMLのスクリプトを表示させる事は できますか? もしできるなら方法をお願いします。 <table border><tr><td>0</td><td>1</td><td>2</td></tr></table>

  • DOM? tableの記述について

    よろしくお願いします。 tbody内をループさせて表示させるスクリプトを作ってみました。 ここで質問なのですが、表示内容を横にできるのでしょうか? イメージとしては・・ A01 A02 A03 B01   B02 B03 を以下のように A01 B01 A02 B02 A03 B03 no のようにしたいのです。 ただのHTMLなら <html> <head> <title>test</title> </head> <body> <table border=0> <tr> <td> <table border=0> <tr><td>A01</td></tr> <tr><td>A02</td></tr> <tr><td>A03</td></tr> </table> </td> <td> <table border=0> <tr><td>B01</td></tr> <tr><td>B02</td></tr> <tr><td>B03</td></tr> </table> </td> </tr> </table> </body> </html> みたいな感じでできると思うんですが、以下のソースだと どうしても表示されなくなります。どこをどうすると よろしいでしょうか?どうかよろしくお願いします。 ------------------------------------------------- <html> <head> <title>TABLE TEST</title> <script> function tsample() { var mybody=document.getElementsByTagName("body").item(0); mytable = document.createElement("TABLE"); mytr = document.createElement("TR"); mytablebody = document.createElement("TBODY"); for(j=0;j<4;j++) { mycurrent_row=document.createElement("TD"); mytablet =document.createElement("TABLE"); for(i=0;i<3;i++) { mycurrent_cell=document.createElement("TR"); mycurrent_cen=document.createElement("TD"); currenttext=document.createTextNode("NO "+j+" LNO "+i+" "); mycurrent_cen.appendChild(currenttext); mycurrent_cell.appendChild(mycurrent_cen); } mycurrent_row.appendChild(mytablet); mytablebody.appendChild(mycurrent_row); } mytable.appendChild(mytablebody); mybody.appendChild(mytr); mybody.appendChild(mytable); mytable.setAttribute("border","2"); } </script> </head> <body onload="tsample()"> </body> </html>

  • JSが正常な動作しないのはなぜ?

    HPを、ファイルから読み込んで表示するように変更しようと、Adobe Spry(Tab)とPrototype.jsを使って、JSで組みました。 内容は、csvファイルを読み取って、HTMLコードを生成し、Spryの指定のID(tabPanel1)に挿入して、Spryを起動するようにしています。が、最後のSpryがなぜか(タブ機能が)機能しません。起動直前にブレイクポインタを入れてとめると、ちゃんとタブが機能するようになります。デバッグ環境はFireFox3.5.7+FireBug on WindowsXP SP3+Apache2.5です。 問題のソースですが下記の通りです。 var TAB = String.fromCharCode( 9 ) ; var LFR = String.fromCharCode( 13 ) + String.fromCharCode( 10 ) ; window.onload = function() { // データファイルの読み取り var myData = new Ajax.Request( "data/linkdata.csv" , { method: "get", onSuccess:function(httpObj){ var line = httpObj.responseText ; var col = new Array(3) ; var bFlg = false ; var src1 = "<ul class='TabbedPanelsTabGroup'>" ; var src2 = "<div class='TabbedPanelsContentGroup'>" ; //var list = line.split("\n") ; var list = line.split( LFR ) ; for ( var i = 0; i < list.length ; i++ ){ if ( list[ i ].length == 0 ) break ; var dlist = list[ i ].split(TAB) ; if ( dlist[ 0 ].length > 0 ) { // 表題の設定 if ( bFlg ) { src2 += "</TABLE></div></div>" ; } src1 += "<li class='TabbedPanelsTab' tabindex='0'>" ; src1 += dlist[ 0 ] ; src1 += "</div></li>" ; src2 += "<div class='TabbedPanelsContent'>" ; src2 += dlist[ 0 ] ; src2 += "<TABLE width='605' bgcolor='#ffffff' border='2'>" ; src2 += "<TR>" ; src2 += "<TD align='center' width='150' bgcolor='" + "'><b>名称</b></TD>" ; src2 += "<TD align='center' width='450' bgcolor='" + "'><b>内容</b></TD></TR>" ; }else{ // 明細の設定 src2 += "<TR>" ; src2 += "<TD><FONT size=-1><A target='_blank' href='" + dlist[2] + "'>" src2 += dlist[ 1 ] + "</A></FONT></TD>" ; src2 += "<TD><FONT size=-1>" + dlist[3] + "</FONT></TD>" ; src2 += "</TR>" ; bFlg = true ; } } src1 += "</ul>" ; src2 += "</div>" ; $('tabPanel1').innerHTML = src1 + src2 ; }, onFailure:function(httpObj){ $('tabPanel1').innerHTML = "エラーにより読み込めませんでした"; } }); var tbObj1 = new Spry.Widget.TabbedPanels("tabPanel1"); } ここ数日ははまっていて、最後の関門でどうしてもうまく行きません。見ただけではわかりませんかもしれませんが、よろしくお願いします。なお、こちらはJSをはじめてからまだ、1年未満です。

  • 表の合計値

    どこかのサイトでcsvファイルを読み込み、行末に合計値を表示するサンプルを見たことはあるのですが、下記のようなことは可能でしょうか。 #単にテーブルに表示されている数値の合計値を、行末に表示する。csvファイルは使わないで、テーブルから値を取得して合計を★に表示する。 <TABLE BORDER="1"> <TR><TD>りんご</TD><TD>80</TD></TR> <TR><TD>みかん</TD><TD>35</TD></TR> <TR><TD>合計</TD><TD>★</TD></TR> </TABLE>

  • PHP POSTについて質問です

       こんにちわ PHP初心者です。 今ショッピングカートづくりをしています。 そこでピンチなのでご指導お願いいたします。 商品を発送する送り先情報を必要な数だけonclickで一件一件増やしもらって その情報を次のページで確認してもらうようにしたいのですが <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> var tbl_cnt = 1; jQuery(document).ready(function($) { $('#add_btn').click(function() { var original = $('#form_set_' + tbl_cnt); tbl_cnt++; $(original).clone().insertAfter(original) .attr('id', 'form_set_' + tbl_cnt) .find('label').each(function(idx, obj) { $(obj).attr('for', $(obj).attr('for').replace(/_[0-9]+$/, '_' + tbl_cnt)); }).end() .find('input').each(function(idx, obj) { $(obj).attr({ 'id' : $(obj).attr('id').replace(/_[0-9]+$/, '_' + tbl_cnt), 'name' : $(obj).attr('name').replace(/_[0-9]+$/, '_' + tbl_cnt) }).val(''); }); }); }); </script> <form action="shop_check.php" method="post"> <table id="form1"> <tbody> <tr> <td><label for="okuriname">氏名</label></td> <td><input type="text" id="okuriname" name="okuriname[$i]"></td> </tr> <tr> <td><label for="okuriemail">email</label></td> <td><input type="text" id="okuriemail" name="okuriemail"></td> </tr> <tr> <td><label for="okuripostal1">郵便番号</label></td> <td><input type="text" id="okuripostal1" name="okuripostal1">-</td> <td><input type="text" id="okuripostal2" name="okuripostal2"></td> </tr> <tr> <td><label for="okuriaddress">住所</label></td> <td><input type="text" id="okuriaddress" name="okuriaddress"></td> </tr> <tr> <td><label for="okuritel">電話番号</label></td> <td><input type="text" id="okuritel" name="okuritel"></td> </tr> </tbody> </table> <input type="button" value="送り先の追加" id="add_btn"><br> <input type="submit" value="送信" name="submit"> </form> この後どのようにしたら次のページで 複数の情報を受け取ればいいのでしょうか? (javascriptはweb上にあったものを引用してます。) javascriptの事もわかっていませんなのでお手柔らかにおねがいします。

    • ベストアンサー
    • PHP
  • レスポンシブ対応の表 センターからズレる

    レスポンシブ対応の表を作成したのですが、640px以下になるとテーブルがセンターから少しズレています。 原因が分からないのです。どうかアドバイスをお願いします。 CSS table { width: 80%; margin: 20px auto; } .tbl td { width: 50%; border: solid 1px #ccc; padding: 10px; } @media screen and (max-width: 640px) { .tbl { width: 80%; } .tbl td { border-bottom: none; display: block; width: 100%; } } HTMLタグ <table class="tbl"> <tr> <td>01</td> <td>02</td> </tr> <tr> <td>03</td> <td>04</td> </tr> <tr> <td>05</td> <td>06</td> </tr> </table>

    • ベストアンサー
    • CSS