• ベストアンサー

表の色を交互に変更

以下の<tr bgcolor=\"#ffffff\">の部分を<tr bgcolor=\"#eeeeee\">と交互に表示させたいのですが、方法がわかりません。よろしくお願いいたします。 open(IN,"$file") || &error("file"); while (<IN>) { ($now,$host) = split(/<>/); print "<tr bgcolor=\"#ffffff\">\n"; print "<td>$now</td>\n"; print "<td>$host</td>\n"; } close(IN);

  • MKNET
  • お礼率94% (89/94)
  • Perl
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • uchac
  • ベストアンサー率100% (2/2)
回答No.2

こんなのはどうでしょう。 #ffffff , #eeeeee が相互に入れ替わります。 while(<IN>) { ... $color = ($color eq '#ffffff') ? '#eeeeee' : '#ffffff'; print "<tr bgcolor=$color>\n"; ... }

MKNET
質問者

お礼

有難うございます。大変わかりやすい書き方で参考になりました。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

こういうやり方もあるということで。 #!/usr/bin/perl use strict; use warnings; my $color = 0xffffff; my $mask = $color ^ 0xeeeeee; while (<DATA>) { my ($now, $host) = split; printf <<EOM , $color; <tr bgcolor="#%06x"> <td>$now</td> <td>$host</td> EOM $color ^= $mask; } __END__ 0130 hogehoge 0200 fugafuga 2230 moge 1500 helloworld 1700 greatquux 1800 goigoi 0915 gachapen 実行例: <tr bgcolor="#ffffff"> <td>0130</td> <td>hogehoge</td> <tr bgcolor="#eeeeee"> <td>0200</td> <td>fugafuga</td> <tr bgcolor="#ffffff"> <td>2230</td> <td>moge</td> <tr bgcolor="#eeeeee"> <td>1500</td> <td>helloworld</td> <tr bgcolor="#ffffff"> <td>1700</td> <td>greatquux</td> <tr bgcolor="#eeeeee"> <td>1800</td> <td>goigoi</td> <tr bgcolor="#ffffff"> <td>0915</td> <td>gachapen</td> って、tr の閉じタグないけどいいの?

MKNET
質問者

お礼

参考になる書き方を有難うございます。trの閉じ忘れも、正常に表示していたために気づきませんでした。指摘していただいて大変助かりました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

カウンタ変数$linoを導入し、whileループを1周するごとに+1して、 そいつが偶数なら、bgcolorとして#eeeを出力するようにすればよいのでは。 偶数かどうかは、$lino % 2 が0かどうかで判定できます。 具体的なコードは省略。

MKNET
質問者

お礼

$count = $count + 1; $count2 = $count % 2; 検索していたところ教えていただいた内容のソースが見つかりました。有難うございました。

関連するQ&A

  • 複数のCSVファイルを1つの表にして出したい

    あるCSVファイルを、Perl+HTMLで、プラウザに「表」で表示させるようにしました。 しかし、追加で複数のCSVファイルを読み込ませて、同じ表に入れることができません。(今ある表のなかの、$r1,2,3と番号が存在してる以外の空欄になっている表に入れたいのです) どのようにすればいいのか、どなたかお教え下さい!>< ちなみに、今作ってあるものはこんなかんじです。 動作確認済み。 #!/usr/local/bin/perl #----------------------------------- $file = "a.20090504.csv"; #----------------------------------- print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<br><br>\n"; print "<center>\n"; print "<table border=1 >\n"; $days = $file; $days =~ s/a.//g; $days =~ s/.csv//g; open(IN,"$file"); @kasou = <IN>; close(IN); foreach $line (@kasou){ ($r1, $r2, $r3, $r4, $r5, $r6, $r7) = split (/,/, $line); print "<tr>\n"; print "<td>$days</td>\n"; print "<td>$r1</td>\n"; print "<td></td>\n"; print "<td>$r2</td>\n"; print "<td></td>\n"; print "<td></td>\n"; print "<td>$r3</td>\n"; print "<td></td>\n"; print "<td></td>\n"; print "<td>$r4</td>\n"; print "<td>$r5</td>\n"; print "<td>$r6</td>\n"; print "<td>$r7</td>\n"; print "</tr>\n"; } print "</table>\n"; print "</body>\n"; print "</html>\n"; ※ちなみに、これですとCSVファイル名の20050504だけがtrに入るようになっています。これは、こうしたいのでこうしているのですが、繰り返しtrに投入されるようになっているのも気になります。 どうしたら直るでしょうか。

  • このような表をもっとスッキリさせるには?

    <table bgcolor="#000000" table style="font-size:12px" cellspacing="1" cellpadding="5" width="500" height=""> <colgroup width="20%"> <colgroup width="30%"> <colgroup width="50%"> <tr><td bgcolor="#FFFF00">あああ</td><td bgcolor="#FFFFFF">ああああ</td><td bgcolor="#FFFFFF">あああああ</td></tr> <tr><td bgcolor="#FFFF00">いいい</td><td bgcolor="#FFFFFF">いいいい</td><td bgcolor="#FFFFFF">いいいいい</td></tr> <tr><td bgcolor="#FFFF00">うううう</td><td bgcolor="#FFFFFF">うううう</td><td bgcolor="#FFFFFF">ううううう</td></tr> </table> ↑こんな感じで表を作っています。 【bgcolor="#FFFFFF"】のようなものがやたらに多いので、CSSを使ってもっとスッキリさせたいのですがどうCSSタグを配置したらよいのかわかりません。。 お分かりの方、是非教えてください!!

  • 【CSS】表に線を入れる

    <TABLE border="0" cellpadding="0" cellspacing="1" bgcolor="#999999"> <TBODY> <TR> <TD bgcolor="#ffffff"></TD> <TD bgcolor="#ffffff"></TD> </TR> <TR> <TD bgcolor="#ffffff"></TD> <TD bgcolor="#ffffff"></TD> </TR> </TBODY> </TABLE> これと同じ事をスタイルシートで表現したいのですが、どのようにしたら良いでしょうか? いろいろと試したのですが、外側だけ線が引かれたり中だけ引かれたりと、うまく出来ません。

    • ベストアンサー
    • HTML
  • ホームページの表の作成について2…

    前回、『ホームページの表の作成について…』という質問をしました。 そして、 <table bgcolor="#000000" cellspacing="1" background="http://radiowind.web.fc2.com/backgroundtable"> <tr> <td bgcolor="#ffffff">あいうえお</td><td bgcolor="#ffffff">かきくけこ</td> </tr> <tr> <td bgcolor="#ffffff">さしすせそ</td><td bgcolor="#ffffff">たちつてと</td> </tr> </table> にしました。 でも、表の背景が表示されません。 どこが間違っているんでしょうか?

  • CGI アプリでjava script を動作できますか?

    下記ソースは、.cgi の一部です。 「登録完了」の部分あたりで、 <script src="http://*************"></script> を動作させたいのですが上手くいきません。 正しいやり方をご存知の方、教えてください。 宜しくお願いします。 -------------------------------------- #ヘッター &hf('初期登録受付'); print "\n<center>"if($CP); print "\n<table width=100% height=90%><tr><td align=center valign=middle>"; print "\n<table bgcolor=#EEEEEE width=550 height=30><tr><td align=center>"; print "\n<table>"; print "\n<tr>"; print "\n<td BGCOLOR=#FFCCDD STYLE=FONT-SIZE:14>($ii)■登録完了$rrr</td>"; print "\n<td STYLE=FONT-SIZE:14>&nbsp;$in{'mail'}&nbsp;</td>"; if($in{'close'} ne "off"){ print "\n<td bgcolor='#FFCCDD'><input type=\"button\" value=\"閉じる\" onClick=\"window.close()\"></td>"; }else{ print "\n<td bgcolor='#FFCCDD'><input type=\"button\" onclick=\"location = '?s=$in{'s'}&sub=$in{'sub'}&close=$in{'close'}&type=$in{'type'}'\" value=\"追加登録\"></td>"; } print "\n</tr></table>"; print "\n</td></tr></table>"; print "\n</td></tr></table>"; print "\n</center>"if($CP); print "\n</body></html>";

  • 表示を一覧表形式にしたいのですが組みかたを教えてください。

    検索データを一覧表で表示したく、いろいろやってみたのですができません。なぜできないのか、どこがいけないのかおしえていただきたいのですが・・・ 一応、一覧表で表示されていたスクリプトをお手本にやっていたのですが、知識がなさすぎてわかりません。よろしくおねがいします。 sub search { &header; print "<table border=1 cellspacing=1><tr>\n"; print "<th>情報提供者<th>ユーザ名<th>業務<th>顧客管理元<th>責任者<th>コメント</tr>\n"; # キーワード前準備 $in{'word'} =~ s/ / /g; @word = split(/\s+/, $in{'word'}); open(IN,"$logfile") || &error("Open Error : $logfile"); $i=0; while (<IN>) { ($no,$sub,$com,$p1,$p2,$p3,$p4) = split(/<>/); if ($in{'P1'} ne "99" && $in{'P1'} ne "$p1") { next; } if ($in{'P2'} ne "99" && $in{'P2'} ne "$p2") { next; } if ($in{'P3'} ne "99" && $in{'P3'} ne "$p3") { next; } if ($in{'P4'} ne "99" && $in{'P3'} ne "$p4") { next; } # キーワードマッチ $flag=1; foreach $key (@word) { if (index($_,$key) >= 0) { $flag=1; } else { $flag=0; last; } } if (!$flag) { next; } $i++; print "<td><b><a href=\"$script?mode=view&no=$no\">$sub</a></b></td>"; print "<td>$part1[$p1]</td><td>$part2[$p2]</td><td>$part3[$p3]</td><td>$part4[$p4]</td>"; print "<td><small>$com</small></td></tr>\n"; print "</table><P>\n"; } close(IN);

    • ベストアンサー
    • Perl
  • CGI アプリでURLジャンプ命令 を動作できますか?

    下記ソースは、.cgi の一部です。 「登録完了」の部分あたりで、指定URLにジャンプさせる、 下記の処理を入れたいのですが、どうも上手くいきません。 どのようにすれば可能でしょうか? <meta http-equiv="Refresh" content="0;URL=指定URL"> 正しいやり方をご存知の方、教えてください。 宜しくお願いします。 -------------------------------------- #ヘッター &hf('初期登録受付'); print "\n<center>"if($CP); print "\n<table width=100% height=90%><tr><td align=center valign=middle>"; print "\n<table bgcolor=#EEEEEE width=550 height=30><tr><td align=center>"; print "\n<table>"; print "\n<tr>"; print "\n<td BGCOLOR=#FFCCDD STYLE=FONT-SIZE:14>($ii)■登録完了$rrr</td>"; print "\n<td STYLE=FONT-SIZE:14>&nbsp;$in{'mail'}&nbsp;</td>"; if($in{'close'} ne "off"){ print "\n<td bgcolor='#FFCCDD'><input type=\"button\" value=\"閉じる\" onClick=\"window.close()\"></td>"; }else{ print "\n<td bgcolor='#FFCCDD'><input type=\"button\" onclick=\"location = '?s=$in{'s'}&sub=$in{'sub'}&close=$in{'close'}&type=$in{'type'}'\" value=\"追加登録\"></td>"; } print "\n</tr></table>"; print "\n</td></tr></table>"; print "\n</td></tr></table>"; print "\n</center>"if($CP); print "\n</body></html>";

    • ベストアンサー
    • HTML
  • 1ページにテーブルを複数設定・一括変更の方法について

    一つのページに複数(十数個)を設置する場合 まとめて設置する方法はあるのでしょうか? また、サイズ等を変更したい場合も 一括して変更する方法はあるのでしょうか? 例えば、以下の物を数十個設置する場合 設置自体は簡単なのですが、変更が・・、 どうにか簡単にできる方法があればご教授下さい。 <center> <table border="0" width="600" cellspacing="1" bgcolor="#0fb1ff" height="200"> <tbody> <tr> <td colspan="2" width="600" bgcolor="#ffffff" height="20" align="center"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="100" align="center"></td> <td width="400" bgcolor="#ffffff" height="100"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> <tr> <td width="200" height="20" bgcolor="#ffffff" align="center"></td> <td width="400" height="20" bgcolor="#ffffff"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> </tbody> </table> </center> 宜しくお願いします。

    • ベストアンサー
    • HTML
  • CGIのカスタマイズについて

    ネットレスキューさんの簡易データベースについて search.cgiの表示部分でテーブルを一つずつ生成させようと思ったのですがエラーが出ます。 どこが悪いのでしょうか? ----------ここから------- foreach $data (@NEW) { ($d,$DATE,$PREF,$NAME,$EMAIL,$HURL,$AGE,$HANDLE,$REM) = split(/\,/,$data); print "<table width="450" border="0" cellspacing="0" cellpadding="0" class="p12_16">\n"; print "<tr>\n"; print "<td colspan="2" bgcolor="#CC0033" height="14"><font color="#FFFFFF">● $NAME</font></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td width="70">地域</td>\n"; print "<td width="380">$PREF</td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td height="14">Eメール</td>\n"; print "<td><a href=\"mailto:$EMAIL\">$EMAIL</a></td>\n"; print "</tr>\n"; ---中略---- print "<td height="14">内容</td>\n"; print "<td>$REM</td>\n"; print "</tr>\n"; print "</table>\n"; if ($next_num ne '') { while (($key,$val) = each %FORM2) { if ($key ne 'FF') { $buf = "$buf&$key=$val"; } } print "<h3>↓<a href=\"search.cgi?$buf&FF=$next_num\">次の$page件</a></h3>\n"; } } print "</body></html>\n\n"; exit; --------------ここまで----- splitの扱い方が良く分っていません。 御存知の方御指導下さいませ。

    • ベストアンサー
    • CGI
  • phpで名簿データを出力

    名簿データを開き、一枠に番号・名前・住所・電話・メールを書き出し一列に4名分のデータを並べます。 CGIだと以下の様なイメージかと思いますが、今回はPHPで書くように指示されました。 勉強不足で月曜迄に出来る気がしません。どのように書けば良いかご教示よろしくお願いします。 open (IN,"meibo.txt"); @abc = <IN>; close (IN); print = "<table border=1><tr>\n"; foreach (@abc) {($id,$name,$address,$tel,$mail) = split(/<>/); print <<HTML; <td>$id<br>$name<br>$address<br>$tel<br>$mail</td> HTML $count++; if ($count > 4){print = "</tr><tr>\n"; $count = 0;} } print = "</tr></table>\n";

    • ベストアンサー
    • PHP

専門家に質問してみよう