- PR -

JSPで複数箇所に同じJavaScriptを記述する場合

1
投稿者投稿内容
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2007-03-10 10:57
お世話になっています。
StrutsとJSP、JavaScriptに関する質問です。

1つのJSPファイルの中に、3ヶ所でJavaScriptを使っています。

その内2ヶ所は画面を表示する時点での現在時刻Aを表示しています。
残りの1ヶ所は、上記で取得した時刻Aと
アクションフォームにセットされている時刻Bの差分を計算して表示させたいです。

【時刻Aの表示部分のコード(1ヶ所目)】
 <SCRIPT LANGUAGE="JavaScript">
 <!--
 
  datDate = new Date();
  strJikan=datDate.getHours();
  strHun=datDate.getMinutes();
  strByo=datDate.getSeconds();
 
  document.write("時刻:"+strJikan+":"+strHun+":"+strByo);
 
 //-->
 </SCRIPT>

【時刻Aの表示部分のコード(2ヶ所目)】
 <SCRIPT LANGUAGE="JavaScript">
 <!--
 
  datDate = new Date();
  strJikan=datDate.getHours();
  strHun=datDate.getMinutes();
  strByo=datDate.getSeconds();
 
  document.write(strJikan.toString()+strHun.toString()+strByo.toString());
 
 //-->
 </SCRIPT>

時刻Aを表示する2ヶ所は出力レイアウトが異なるだけなので
document.write以外の部分を1回のコーディングで済ませたいのですが、
どうすればできるでしょうか?

また、時刻Aとアクションフォームにセットされている時刻Bの差分を求める方法がわからないのですが、
どうすれば時刻BをJavaScript内で取得できるのでしょうか?
スクリプトレットで取得する方法はわかるのですが(bean:defineタグ)…。

開発環境は以下のとおりです。よろしくお願いいたします。
Eclipse3.2、Tomcat5.0.28、Struts1.2.9、Java2SDK1.4.2
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-03-10 11:43
JavaScriptで現在の日時ではなく所定の日時を示す値を生成する場合、
http://www.tohoho-web.com/js/date.htm#newDate
上記のサイトの通りにやります。

var date = new Date("1999/12/31 23:59:59");
とやれば、その文字列の日時を示す値を生成する事になりますね。

で、サーバサイドの値をクライアントサイドの値に変換するには、
"1999/12/31 23:59:59"という文字列を生成してやれば、
その通りにできる事になりませんか?

みゅうさんが仰るアクションフォームの日時というのが
どういう型で扱われているか知りませんが、文字列で持っているならば、
コード:
<script>
var date = new Date("<bean:write name="フォーム名" scope="スコープ" propety="プロパティ/>");
</script>


と書けば、クライアントに出力されるスクリプトは、
コード:
<script>
var date = new Date("1999/12/31 23:59:59");
</script>


という感じになるはずです。


最初の質問は関数を渡せばできるでしょう。
コード:
function writeNow(out){
    var date = new Date();
    out(date.getHours(), date.getMinutes(), date.getSeconds());
}


これがベースとなる関数で、渡す側は、
コード:
writeNow(function(hours, minutes, seconds){
     document.write("test1=" + hours + ":" + minutes + ":" + seconds);
});

writeNow(function(hours, minutes, seconds){
     document.write("test2=" + hours + ":" + minutes + ":" + seconds);
});


というように使い分ければいいかと思います。
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2007-03-13 00:11
アドバイスありがとうございます。

JavaScriptでアクションフォームから値を取得する件、
2ヶ所で同じコーディングをしている件、どちらも無事解決しました。
1

スキルアップ/キャリアアップ(JOB@IT)