JavaScriptでHTML内に記入されている日付を判定して画像を表

このQ&Aのポイント
  • JavaScriptを使用してHTML内に記入されている日付を判定し、条件に応じて画像を表示させることは可能でしょうか?
  • 例えば、テーブルの行の中に記入された日付が今日の日付から7日以内であれば、該当行の特定の要素に「NEW!」という画像を表示する方法はありますか?
  • このような処理を実現するためには、JavaScriptの日付操作機能を使用してテーブル内の日付を取得し、日付の比較を行い条件に一致するかどうかを確認する必要があります。
回答を見る
  • ベストアンサー

JavaScriptでHTML内に記入されている日付を判定して画像を表

JavaScriptでHTML内に記入されている日付を判定して画像を表示させることはできますでしょうか? 例えばこんなソースがあったとします。 <table style="width: 66%"> <tr> <td style="style1"></td> <td style="style2">2010/11/1</td> <td>&nbsp;</td> </tr> <tr> <td style="style1"></td> <td style="style2">2010/09/09</td> <td>&nbsp;</td> </tr> <tr> <td style="style1"></td> <td style="style2">2010/01/01</td> <td>&nbsp;</td> </tr> </table> テーブルの行の中に今日の日付から7日以内だった場合、該当行の<td style="style1"></td>に「NEW!」っていう画像を入れてあげたいのですがそういうのは可能でしょうか?

  • mr-r00
  • お礼率93% (480/516)

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

  • ベストアンサー
  • 665
  • ベストアンサー率72% (18/25)
回答No.1

各tr要素について、2つめのtd要素の日付を正規表現で取得してDateオブジェクトに変換し、それが指定した日数の範囲内であれば1つめのtd要素に画像のHTMLを挿入するという方法はどうでしょう。 以下、table要素にid属性として"sample"を指定しておいた場合(「<table id="sample" ...>」のように)のサンプルコードです。 (function(){ var new_icon = '<img src="new.gif" alt="new">'; // 挿入するHTML var newdata = 7; // 画像を表示する日数 var rows = document.getElementById("sample").getElementsByTagName("tr"); var cells; var matched; var rows_count, i; var base = new Date(); base = new Date(base.getFullYear(), base.getMonth(), base.getDate()) - newdata * 86400000; for (rows_count = rows.length, i = 0; i < rows_count; i++) { cells = rows[i].getElementsByTagName("td"); matched = cells[1].innerHTML.match(/(\d+)\/(\d+)\/(\d+)/); if (matched && new Date(Number(matched[1]), Number(matched[2]) - 1, Number(matched[3])) >= base) { cells[0].innerHTML = new_icon; } } })(); script要素に直接記述する場合も外部jsファイルで呼び出す場合も、script要素はtable要素よりも後に記述する必要があります。

mr-r00
質問者

お礼

大変参考になりました。 ありがとうございます

関連するQ&A

  • HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。

    HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。 下のソースで50と130のとこをきちんとエクセルのように枠線揃えたいのですが、 どのようにしたら良いのでしょうか? よろしくお願いします。 <HTML> <BODY> <TABLE border=1><TR> <TH width="50"></TH> <TH width="135"></TH> <TH width="65"></th> <TH width="65"></th> <TH width="65"></th> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50 rowSpan=2>50</TD> <TD width=135 rowSpan=2>135</TD> <TD width=65 rowSpan=2>65</TD> <TD width=130 colSpan=2>130</TD> </TR><TR> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=50>50</TD> <TD width=135>135</TD> <TD width=65>65</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=250 colSpan=3>250</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=250>250</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • HTML
  • テーブルのレイアウトがおかしくなる

    畏れ入ります。 テーブルを作っているのですが奇妙な現象にあっています。 <table border="1" width="100%"> <tr> <th width="18">&nbsp;</th> <th width="100">&nbsp;</th> <th>&nbsp;</th> <th width="100">&nbsp;</th> </tr> <tr> <td rowspan="2">&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td colspan="3">&nbsp; <!-- ここに たくさんの 文字列を入れると ・・・ --> </td> </tr> </table> このコメントの部分が無い状態では正常にでていますが、 ここにたくさんの文字列(半角30文字程度でおかしくなります)を投入すると、レイアウトが異常に崩れてしまいます。 文字列は改行してもかまわないのですが テーブル1行目2行目のセルサイズ(width)がこのように変化してしまうと困るのです。 どのようにしたら良いか(width=100の部分を守らせたい) 教えてください。

    • ベストアンサー
    • HTML
  • XOOPSのHTMLタグ記入について

    XOOPS cube2.0を使用しています。 FAQモジュールで、質問/回答の項目を増やし、回答欄でHTMLタグを使用しましたが、どうも表示が不正です。 具体的には、TABLEタグなのですが、TABLEタグを使用してページを表示させた場合、かなり大きな空白が表の上にできてしまいます。 TABLEタグを消すとそういったことがなくなるので、TABLEタグが問題なのか、どうなのか。 ソースを表示させようと右クリックしても表示できないので困ってます。 何かよい助言をいただけないでしょうか。 ●必要事項を入力します。 <TABLE BORDER="1" WIDTH="100%" HEIGHT="100%" CELLSPACING="1" CELLPADDING="1"> <TR> <TD>1-1</TD> <TD>1-2</TD> <TD>1-3</TD> </TR> <TR> <TD>2-1</TD> <TD>2-2</TD> <TD>2-3</TD> </TR> </TABLE> としたときに、●必要事項を入力します。のすぐ下に何行もの空白が表示されます…

  • JavaScriptでの表の行の表示・非表示の切り替え

    現状では、テスト1を選んだときだけテキストを出すことはできるのですが、どうしても2行表示するという事ができません。 テスト1を選択した時だけ2行表示し、テスト1以外を選択した時は非表示にするにはどうすればよいのでしょうか。 <html> <head> <title>テスト</title> <script type="text/javascript" language="JavaScript"> <!-- function showthis(sel) { var value = sel.options[sel.selectedIndex].value; if(value == "test1"){ if(document.getElementById){ if(document.getElementById(value).style.display == "block"){ document.getElementById(value).style.display = "none"; }else{ document.getElementById(value).style.display = "block"; } } } else if(value != "test1"){ if(document.getElementById){ document.getElementById("test1").style.display = "none"; } } } // --> </script> </head> <body> <table border="1" width="367"> <tr> <td width="134"> <form> <select onchange="showthis(this)"> <option selected="selected">選んでください</option> <option value="test1">テスト1</option> <option value="test2">テスト2</option> <option value="test3">テスト3</option> </select> </form> </td> <td width="217"> <p>テスト</p> </td> </tr> <tr> <td width="134"> <p>&nbsp;</p> </td> <td width="217"> <p>&nbsp;</p> </td> </tr> </table> <div id="test1" style="display:none;"> (本来はここに2行追加したい) </div> </body> </html>

  • HTMLの画像の貼り方について質問です。

    はじめまして。OHANA_Sといいます。 よろしくお願いします。 早速ですが、HTMLについて質問させて下さい。 HTMLでTABLEを組んで 画像を隙間なく貼り合わせたいのですが、 「CELLSPACING="0" CELPADDING="0" BORDER="0"」 を記入しても画像の間に少し隙間が出てキレイに組めません。 何か対処法がありましたら教えてください。 今、手こずってるのがこのTABLEです。 1段目:画像1枚(縦200px、横525px) 2段目:画像7枚(縦15px、横75px(×7=合計525px)) <table WIDTH="525" CELLSPACING="0" CELPADDING="0" BORDER="0"> <td colspan=7> <img src="1段目画像.gif" WIDTH="525" height="200" BORDER="0"> </td><tr> <td> <img src="2段目画像.gif" WIDTH="75" height="15" BORDER="0"> </td> (中略) </TABLE> 長文になってしまい申し訳ありませんが、よろしくお願いします。

  • HTMLの表で幅を指定しても折り返すことは無理なのでしょうか?

    以下のHTMLの表は横幅を指定していますが、 すごく横長な表になってしまいます。セルの幅を指定してもセル内の文字を折り返す事は不可能なのでしょうか? <html> <head> <title>table</title> </head> <body> <table width="570" border="1"> <tr><td width="130"> test1</td> <td bgcolor="#CCCCCC" width="440"> oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo </td></tr></table> </body> </html>

    • ベストアンサー
    • HTML
  • エクセルでのHTMLの表の切替(行・列切替も)

    こんにちは。 お世話になります。 ショッピングサイトで表示中のサイズ表を新たなデザインに変えることにしました。 具体的には下記に記載の通りです。 元は横に伸びる表記だったものをこのタイミングで縦に伸びる表記に変えます。 また、デザインもよりシンプルなものになります。 このアイテム1点であればこれにて作業完了なのですが、 1000点ともなると、仕組みを作った方がはるかに早いのですが、 手法が頭に浮かびません。 新レイアウトにするのは、エクセル上でひな形の表を作って、それをマクロでボタンを押せば 一気にHTMLのTABLEタグ付きで出力すればイケるかも、と思いました。 ではそのひな形の表を現在のHTMLタグから起こすには… 想像ができませんでした。 それともそもそもまったく違う手法の方が簡易…?難しいです。 よろしければご教示いただけないでしょうか。 ちなみに袖丈があるものもあったり、アイテムによって形状・揃えているサイズ展開が違うため、 テーブルの行や列はアイテムによって変わってきてしまい、○行○列のものです、と いうことはできません。 -------------------- ※現在のサイズ表である↓を <font color=#000000 size=3><b>サイズ表</b></font><br><table width=300 cellspacing=0 cellpadding=2 bgcolor=#FFFFFF><tr><td bgcolor=#66CC66><table width=100% cellspacing=1 cellpadding=1 bgcolor=#FFFFFF><tr><td bgcolor=#99CC99><table width=100% cellspacing=0 cellpadding=20 bgcolor=#FFFFFF><tr><td bgcolor=#FFFFFF align=left><font color=#000000 size=3><table border=1 width=420><tr><td width=60></td><td width=60>92cm</td><td width=60>98cm</td><td width=60>104cm</td><td width=60>110cm</td><td width=60>116cm</td><td width=60>122cm</td></tr> <tr><td width=60>総丈</td><td width=60>54cm</td><td width=60>57cm</td><td width=60>60cm</td><td width=60>63cm</td><td width=60>66cm</td><td width=60>69cm</td></tr> <tr><td width=60>身幅</td><td width=60>26cm</td><td width=60>27cm</td><td width=60>28cm</td><td width=60>29cm</td><td width=60>30cm</td><td width=60>31cm</td></tr></table><br>※平置きでの採寸になるので、若干の誤差はご了承ください。<br></font></td></tr></table></td></tr></table></td></tr></table> 新しい以下のサイズ表表記に切り替えたいです。 【サイズ表】 <table> <tr> <th scope="row">年齢・身長</th> <th scope="row">総丈</th> <th scope="row">身幅</th> </tr> <tr> <th scope="row">92cm</th> <td>54cm</td> <td>26cm</td> </tr> <tr> <th scope="row">98cm</th> <td>57cm</td> <td>27cm</td> </tr> <tr> <th scope="row">104cm</th> <td>60cm</td> <td>28cm</td> </tr> <tr> <th scope="row">110cm</th> <td>63cm</td> <td>29cm</td> </tr> <tr> <th scope="row">116cm</th> <td>66cm</td> <td>30cm</td> </tr> <tr> <th scope="row">122cm</th> <td>69cm</td> <td>31cm</td> </tr> </table> ※平置きでの採寸になるので、若干の誤差はご了承ください。 <br> ちなみに、新しいサイズ表は、サイズ表以外の他の商品情報とともに 以下のスタイルで定義されています。 <style> .sc-table-01{width: 320px;font-size: 0.9em;} .sc-table-01 table{ border-collapse:collapse; margin: 5px; width: 100%; } .sc-table-01 th{ font-style: normal; font-size: 0.9em; color: #000; background-color: #FFD6C1; border: 1px solid #999; padding: 6px; white-space: nowrap; line-height: 150%; } .sc-table-01 td{ border: 1px solid #999; font-size: 0.9em; padding: 10px; line-height: 150%; } </style> <div class="sc-table-01">

  • HTML テーブルに画像を貼り付けるときのサイズ

    ページいっぱいに広がるテーブルをひとつ用意し、 それを横に3等分して、それぞれのセルの下部に画像を表示しようと思いました。 しかし、表示してみると、テーブルは画面の横幅よりも広がってしまい、思うとおりに表示できません。 画像の代わりに文字を表示してみると、思った位置に表示できているのですが・・・。 画像を、画面の横幅を3等分したセルいっぱいに表示するにはどうしたらよいのでしょうか? 現在のソース: <TABLE WIDTH="100%" HEIGHT="100%">  <TR ALIGN="center" VALIGN="bottom">    <TD WIDTH="33%">     <IMG SRC="~~" WIDTH="100%">    </TD>    <TD WIDTH="33%">     <IMG SRC="~~" WIDTH="100%">    </TD>    <TD WIDTH="33%">     <IMG SRC="~~" WIDTH="100%">    </TD>   </TR> </TABLE>

  • HTMLで書いた表の上部にはみ出た空白が出る

    HTMLで書いた表の上部に空白部分が表をはみ出てきてしまいます。たとえば11列の表を作りました。しかし行が増えるに従って、表の上部にはみ出た空欄が出て空欄の高さが長くなってきます。どういう指定をすれば表だけになって、この白い部分はなくなるか教えて下さい。あるいは最後のところのHTMLが不足しているとか。 <TABLE> <TABLE BORDER=5 WIDTH=800> 一列目 <TR bgColor=#f0ffff> <TD width=30>1</TD> <TD width=100>7/18(月)</TD> <TD width=500>成田発<BR>ミュンヘン着</TD> <TD width=300>午前<BR>午後</TD> 同じように10列の表があるとする。 最後</TABLE> 同じように11列くらい書いていると 上部に白い空白が出来てくる。なぜでしょうか。

  • CSSについて 初心者です。

    勉強中の身なんですが・・ このように設定した場合文章1と文章2が大きく開く状態になるんですが、なぜでしょうか? また文章1セルの真ん中に表示され文章2が左にひょうじされるのも分りません・・・・ いろいろ調べてみたんですが中々納得ができなくて・・・ 特にこうういう風にやりたいとかは特になくて、なんでこうなるのかが知りたいのです。 詳しい方説明して頂けるとありがたいです。すみませんがよろしくお願い致しますm(。。)m 「HTML」 <table> <tr> <th>見出し</th> <th></th> <th>&nbsp;</th> <th>&nbsp;</th> </tr> <tr> <td>内容</td> <td>&nbsp;</td> <td>&nbsp;</td> <td></td> </tr> </table> 「CSS] table{ width:250px; border-collapse:collapse; border-width:1px; border-style:solid; border-color:#000000; border-spacing:0; } th{ border-width:1px; border-style:solid; border-color:#000000; } td{ border-width:1px; border-style:solid; }

    • ベストアンサー
    • HTML

専門家に質問してみよう