• ベストアンサー

自動で表作成

ぜひご教授ください。 以前、問合せていただいたものの延長です http://oshiete1.goo.ne.jp/kotaeru.php3?q=2261428 データをhtmlに、ジャバスクリプトで表にしようとしていて、ジャバスクリプトファイル(a.js)とデータは別ファイル化(b.jsとc.js)することを前提にしています。 いざ作りはじめたところ、データが多いことがわかったので、表を2列にしたものにできないか、と考えたのですが、その場合、a.jsはどのように書き込めばよいのか、皆目検討がつきません。 よろしくお願いします。 ちなみに、今現在の状況はこうなっています。 a.js↓ html = '<TABLE cellpadding="3" cellspacing="2" width="100%">'   for (i=data.length-1;i>=0;i--) //昇順:  for (i=0;i<data.length;i++) //降順: for (i=data.length-1;i>=0;i--) { html += ' <TBODY><TR>' html += ' <TD bgcolor="#ffffff" onmouseover="this.style.backgroundColor='#8b0000'" onmouseout="this.style.backgroundColor=''"> ' html += ' <TABLE width="100%" cellpadding="1" cellspacing="0" bgcolor="#ffffff"> ' html += ' <TBODY><TR> ' html += ' <td><a href= ' +link[i]+' >' html += ' '+data[i]+ ' </td>' html += ' </tr></tbody></table>' html += ' </td></tr></tbody>' } html += '</table>' //書き出し document.write( html ) b.js↓ var data = new Array() data[50] = "aaaaa" data[49] = "bbbbb"  ↓ data[0] = "xxxxx" c.js↓ var link = new Array() link[50] = "049.html" link[49] = "048.html"  ↓ link[0] = "001.html"

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

  • ベストアンサー
回答No.3

降順の場合は・・ for(i=data.length-1;i>=0;i--){ str_html = str_html + '<tr><td><a href=' + link[i] + '>' + data[i] + '</td>'; --i; if(i==-1){ str_html = str_html + '<td></td></tr>'; }else{ str_html = str_html + '<td><a href=' + link[i] + '>' + data[i] + '</td></tr>'; } } 偶数か奇数か先に判別しておく(%2)方法が普通ですが・・ .

nsi2xpz
質問者

お礼

ありがとうございます。 ばっちりです! 助かりました

その他の回答 (2)

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.2

素直に for(i=data.length-1;i>=0;i--){ str_html = str_html + '<tr><td><a href=' + link[i] + '>' + data[i] + '</td>'; --i; str_html = str_html + '<td><a href=' + link[i] + '>' + data[i] + '</td></tr>'; } とするのが吉かと。

nsi2xpz
質問者

お礼

ありがとうございます。 リンク先も表示もばっちりです。。。 が、一つ気がかりがあります。 今、データが偶数(実際40個あります)なので、表にうまくおさまっているのですが、奇数だった場合、最後のところは空欄でしょうか? 「undefined」とか出そうな気がするのですが…。 もしそうでしたら、出ないやり方はありますか?

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

どーなってんだこりゃ。。。 テーブルがいくつも存在しているようだし、かといって、それの存在理由がイマイチ分からない。。。(汗 普通に1つのテーブルに横2列、縦複数行でいいんじゃない。。。? str_html = '<table>' for(i=data.length-1;i>=0;i--){ str_html = str_html + '<tr><td><a href=' + link[i] + '>' + data[i] + '</td>' str_html = str_html + '<td><a href=' + link[i--] + '>' + data[i] + '</td></tr>' } str_html = str_html + '</table>' ソースや記述ミスに責任は持ちません~。

nsi2xpz
質問者

お礼

ありがとうございます。 2つめのTDタグ内、 <a href=' + link[i--] + '>' + data[i] だと、なぜだか表示はうまくいきますが、リンク先が行ごとで同じになってしまいます。 -1をつけたり、data[i--]にしたりしてもうまくいきません。 どうしたものでしょうか。

関連するQ&A