プロが教えるわが家の防犯対策術!

教えていただきたいのですが、現在wwwmail.cgi
を利用させていただいております。
このフォーム入力後の送信結果ページをカスタマイズしたいのですが
ある程度は出来たのですが、出力されたソースをみると、TABLEを利用し出力されております。
そこで、TABLEは1つなのでCSSで出来るのですが、
TDなど複数あるものを変更するのにはどのようにすれば宜しいのでしょうか。
普通のHTMLページでしたら、classなどを使用して左の行は背景色:黒、右は背景色:白などできるのですが。
送信結果ページの場合勝手に出力されてしまい出来なくて困っております。
すみませんがお分かりの方教えて下さい。

A 回答 (3件)

どのような動作をするスクリプトなのか解らないのでなんとも言えないですね。

HTMLはテンプレートを読み込んで出力するのか?それともスクリプト内に直書きされているのでしょうか?
前者ならテンプレートの書き換えで任意のクラスを設定してやれば良いでしょうし、後者ならスクリプトの書き換えが必要でしょう。

現状のままで何も特殊なマークアップをされていない td 要素群に異なるスタイルを指定するのは不可能です。

この回答への補足

hujitomo 様

ご回答有難うございます。
メールフォームに入力された項目(お名前や、住所等ここでテーブルを使用してます。左が項目のTD、右が入力するためのTD)
が、メールで届くタイプなのですが、お客様が送信したときに
WEB上に送信結果のページが出ます。

CGIの中身には下記のようになってます。

# <<END_OF_DATA ~ END_OF_DATA の間を好みにあわせて変更してください。
$header = <<END_OF_DATA;
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<title>メール送信結果</title>
</head>
<body>
<h1>メール送信結果</h1>
<hr>
<p>下記のメールを送信しました。ありがとうございました。</p>
<hr>
END_OF_DATA

今はCGIに直接CSSを記載してます。

すみません、あまりプログラミングに詳しくないため、前者か後者かも
理解できていません。
せっかくご連絡いただいたのに、適切な回答が出来ずすみません。

補足日時:2010/01/22 19:54
    • good
    • 0

昔はDHTMLと呼んでいましたが、JavaScriptを使えばどのTDにどのスタイルを設定するか等の変更が可能です。


var obj = document.getElementsByTagName('TD');
とかするとTDのタグの配列を取得できますので、スタイルを変更したいタグのスタイルを直接変更してあげれば可能です。

bodyのonloadイベントで実行すると良いと思います。

この回答への補足

wildcat-yp 様

ご回答有難うございます。
var obj = document.getElementsByTagName('TD');
ですが、CGIの中に直接記述するのでしょうか。
JavaScriptは使ったことが無く全く理解できていません。
うまく表現できないのですが、メールフォームに入力したお客様が
送信後に表示されるページが、最初のままの味気ないページ(送信しました、有難うございます)でなく、既存のサイトのレイアウトのコンテンツ部分に出力したいと思ってます。

補足日時:2010/01/24 00:41
    • good
    • 0

1です



どうやらスクリプトを直接編集してやるのが一番わかり易いでしょうね。
2さんのおっしゃる通り JavaScript や DOM を使う方法もありますが、未経験ではちょいとハードルが高いでしょう。

スクリプト内で問題の table エレメントを生成する箇所(提示していただいたソースには table なんか無いっスよ…)を探して直接 name などを割り当てれば良いんじゃないでしょうか?もしくは左側のセルを全部 th 要素にしてしまうとか。

ただ単に送信完了画面を変更したいというだけなのなら(その完了画面が動的に変更されない場合に限りますけど)HTML ファイルを別途作成し

&replace('表示したい HTLM へのパス');

sub replace {
my ($str) = $_[0];
print "Content-type: text/html\n\n";
print "<html><head>";
print "<meta http-equiv=\"refresh\" content=\"0; URL=$str\">\n";
print "</head></html>\n";
exit;
}

こんなルーチンでふっ飛ばすというのもアリかも

この回答への補足

hujitomo 様
再度ご教授いただきまして有り難う御座います。
すみません、提示したソースはCGIのものでテーブルがあるのは、お問合せフォームのHTMLです。

色々勉強してみましたが、hujitomo 様がおっしゃられるように、送信結果を別のページに飛ばすという方法も見つけましたが、これだとお客様が入力された情報が表示されないのではと思い別の方法で考えてました。

本当に上手く表現できずに申し訳ありません。
ちょっとひらめいたのが、HTMLのテーブルに指定してるCSSをそのままCGIに記述すれば送信結果のページもお問合せフォームと同じレイアウトになるんじゃないかと思いましたので、これから試してみます。

また試した結果をご報告させていただきますので、その際にはアドバイスをいただければ幸いです。

親切に何度もご相談いただき本当に有り難う御座います。

補足日時:2010/01/25 13:09
    • good
    • 0
この回答へのお礼

hujitomo 様

何度か試行錯誤し解決することが出来ました。
丁寧なご教授まことに有難うございます。

これからも勉強しながら作成していきたいと思います。

お礼日時:2010/01/29 22:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!