広告

posted by fanblog
「ここにブログの名前を入れます」は更新を終了しました。記事はすべて新ブログ「Big Bang」に移転済みです。記事のタイトルをクリックすると新ブログの該当記事に移動します。そちらでお楽しみください。

最新記事だけ日付を消す新スクリプト -お知らせ枠の設置-

先ほど「querySelectorとquerySelectorAll」という記事を書きましたが、実はあれ、この記事の前フリです。

楽して稼ぎたい」のマスクドライダー17号さんなんですが、ブログを開くと最新記事を「お知らせ」欄として使っています。

最新記事を未来の日付にすれば、一番上に表示されるので、「お知らせ」を書いて常に表示できます。

問題なのが、しばらくの間「2017年05月27日」と表示されているんですね。待っていれば消えるんですけど。

どうやって消しているのかというと、スクリプトを使っています。そのソースを変えれば、もっと早くに、すぐ消えるんじゃないか?と、思ってソースを見てみました。実にドンくさいソースコードでした。

でもよく考えたら、これは私が書いたものでした困った

そのソースコードが、これですが、無駄に長い。「記事の日付を消したい」より

<script type="text/javascript">(function(){var entries=document.getElementById('entries');if(!entries){return;}var div=entries.getElementsByTagName('div');if(!div){return;}for(var i=0;i<div.length;i++){if(div[i].className=='entry'){var child=div[i].getElementsByTagName('div');if(child){for(var n=0;n<child.length;n++){if(child[n].className=='entryDate'){var date=child[n].innerHTML.replace(/^\s+|日\s*$/g,'').replace(/年|月/g,'/').split('/');var entrydate=new Date(date[0],date[1]-1,date[2]);var today=new Date();if(today.getTime()<entrydate.getTime()){child[n].style.display='none';div[i].className='entry future';break;}return;}}}}}})();</script>

これを、先ほどの記事「querySelectorとquerySelectorAll」を使って書きかえます。

まずは、古いコードをスキンから削除してください。もういりません。そして、この下のコードを使います。

新しいソースコード

<script type="text/javascript">date=document.querySelector('div.entryDate');if(date)date.style.display='none';</script>

すごく短くなった。querySelector恐るべし!

ただし、手を抜いています。最新記事の日付は常に未来である。その記事は必ず先頭に表示される。そういう前提で作りました。

設置方法

これを、スキンではなく、「2017年05月27日」の日付の記事の中に付け加えます。

張り付けるのは、記事の最初でも最後でも構いません。
問題がなければ、「2017年05月27日」の日付はソッコーで消えます。


追記

実際にマスクドライダー17号さんが設置したところ、ある事情でうまくいきませんでした。
(上のソースは、うまくいくように修正済みです)

それに関して別の記事「ソースのバグの作り方 -if文のカッコ-」で説明しています。

新ブログ「Big Bang」で続きを読む