Top > diary > 2009-06-19

久しぶりの書込み Edit

 暫く書いていませんでしたがネタが無かったわけではありません。書いている途中で内容に付属する部品を作り始めて、それが大掛かりになってきてしまい。途中で他の事やり始めた結果、放置していました。orz
 まぁ1月ぐらいに書いた内容ですが、せっかく部品も完成させたので・・・。

[Javascript][plugin] Edit

 ホームページ上の部品として、画像数枚をボタンで切替表示できるものを作ってくれと頼まれたのだが、それってjavascriptじゃないと作れないなぁと思いつつ、要望を満たしているようなjavascriptを使っているサイトを探してみると、単純なものが少ない。 しかたがないので、要望条件に近く単純な構造のものを探し改造してみることにした。

 ただjavascriptなんて殆ど触ったことが無いので、構造とルールを読取るのに少し苦労させられた。 特に見つけた参考プログラムには改行、レベルの段階構造が無く、変数名に意味の無いa、aaといった一文字二文字を使っている事が多く読取りにくさと同時に移植時に元からあるjavascriptと変数名が被りやすい書き方をしていた。後々の事を考えるとめんどくさくても変数名はなるべく意味のあるものを使いたいし*1、内容を正しく読み取れるように整理も必要と考え、殆ど書き換える作業が必要だった。まぁ最終的にロジックもおかしい気がしたから作り直したのだが・・・。

  1. <html>
  2. <head>
  3. <title>img view</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
  5. <script language="JavaScript">
  6. <!--
  7. //*****img view 1.0
  8. var i_count=0,last_count,hantei=1,position=0;
  9. var img_f="../test/img/test_";
  10. store_file=new Array();
  11.  
  12. //画像ファイル名の配列格納しカウントを増やす
  13. function img_name(){
  14.   store_file[i_count]=new Image();
  15.   store_file[i_count].src=img_f+i_count+".jpg";
  16.   i_count++;
  17. }
  18. //画像ファイルが存在するかチェックするためにhtmlに参照先を定義
  19. function img_set_check(){
  20.   document.getElementById("check").src=img_f+i_count+".jpg";
  21. }
  22. //hanteiが1の間、画像が存在すればimg_name()とimg_set_check()を繰返す
  23. function on_load(){
  24.   p_no_set();
  25.   document.getElementById("button1").style.visibility="visible";
  26.   if(hantei){
  27.     img_name();
  28.     img_set_check();
  29.   }
  30. }
  31. //画像が存在しなければ、hanteiを0にして処理を終了する
  32. function on_error(){
  33.   document.getElementById("total_img").firstChild.nodeValue=i_count+"]";
  34.   last_count=i_count-1;
  35.   hantei=0;
  36. }
  37. function top(){
  38.   position=0;
  39.   img_set();
  40.   p_no_set();
  41. }
  42. function previous(){
  43.   if(position>0){
  44.     position--;
  45.     img_set();
  46.     p_no_set();
  47.   }else{
  48.     position=last_count;
  49.     img_set();
  50.     p_no_set();
  51.   }
  52. }
  53. function next(){
  54.   if(position<last_count){
  55.     position++;
  56.     img_set();
  57.     p_no_set();
  58.   }else{
  59.     position=0;
  60.     img_set();
  61.     p_no_set();
  62.   }
  63. }
  64. function img_set(){
  65.   document.getElementById("imgview").src=store_file[position].src;
  66. }
  67. function p_no_set(){
  68.   document.getElementById("count").firstChild.nodeValue="[ "+(position+1)+"/";
  69. }
  70. -->
  71. </script>
  72. </head>
  73. <body bgcolor="#FFFFFF" onLoad="img_set_check();">
  74.   <table width = "580">
  75.     <tbody>
  76.       <tr>
  77.         <td id="imgtd" align="center" valign="middle" colspan="2">
  78.           <div id="imgdiv">
  79.             <img id="imgview" galleryimg="no" src="../test/img/test_0.jpg" />
  80.           </div>
  81.         </td>
  82.       </tr>
  83.       <tr>
  84.         <td align="center" valign="middle">
  85.           <div id="button1" style="visibility:hidden;">
  86.             <input type="button" onclick="top();" value="top" />
  87.             <input type="button" onclick="previous();" value="< 前" />
  88.             <input type="button" onclick="next();" value="次 >" />
  89.           </div>
  90.         </td>
  91.         <td><span id="count">[ 1/</span><span id="total_img">1]</span></td>
  92.       </tr>
  93.     </tbody>
  94.   </table>
  95.   <img id="check" galleryimg="no" style="height:10;visibility:hidden;" onload="on_load();" onerror="on_error();" />
  96. </body>
  97. </html>

 とりあえずhtml文に追加するならこれで十分なんだが、この話を書くと実際の動作サンプルを置きたくなる。もちろん画像と単純なhtmlファイルを適当なwebフォルダーにUPすれば簡単なのだろうが、一応PukiWikiプラグインを下手なりにも作っているサイトとしてはプラグインの構造なんかを考えてしまう。勿論こんなプラグインに需要なんてなさそうだが自己満足の世界で作ってしまうのが私なのでしょう。

[ 1/1]

 サンプル画像に、以前 友達からもらった風景がちょうど良いサイズだったので遣わさせて貰いました。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes