免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 19816 | 回复: 24

[乔楚技术][原创][非PHP] JS做的批量图片展示程序[第二版] [复制链接]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
发表于 2005-10-18 19:28 |显示全部楼层
[乔楚技术][原创][非PHP] JS做的批量图片展示程序

这几天给别人做了一个小的JavaScript的程序,来做批量图片的展示,完全支持FireFox和IE。

觉得查强人意,小show一下子。欢迎大家给出意见。因为刚做完,还没有做代码优化。

把以下代码,保存为test.htm,直接打开即可看到效果。

图片的分页和图片的编号的得到,使用正则表达式处理的。

  1. <html><body>
  2. <table width="750" border=0 align="center" background="images/bbg.gif" id="pTable" name="pTable">
  3.   <tr id="pTr" name="pTr">
  4.      <td  id="pTd" name="pTd" width=150 height=150>
  5.         <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  6.            <tr>
  7.               <td  id="pTd" name="pTd" width=25>   </td>
  8.               <td  id="pTd" name="pTd">
  9.                  <table width="100%"  border="0" cellpadding="1" cellspacing="1" bgcolor="#FF6699">
  10.                     <tr>
  11.                        <td bgcolor="#FFFFFF" align=center valign=middle>{IMAGE}</td>
  12.                     </tr>
  13.                  </table>
  14.               </td>
  15.              </tr>
  16.              <tr>
  17.               <td height="10" colspan="2"  id="pTd" name="pTd"> </td>
  18.            </tr>
  19.         </table>
  20.      </td>  
  21.   </tr>
  22. </table>

  23. <script language=javascript>

  24. // --------------------------------------------------------------------------
  25. // File name   : test.htm
  26. // Description : 图像浏览画册
  27. // Requirement : HTML+JavaScript
  28. //
  29. // Copyright(C), HonestQiao, 2005, All Rights Reserved.
  30. //
  31. // Author: HonestQiao (honestqiao@hotmail.com)
  32. //
  33. // --------------------------------------------------------------------------


  34.   /// 设置每行显示多少个图片
  35.   var LineNum = 4;

  36.   /// 设置每页显示多少行图片
  37.   var PageNum = 3;

  38.   /// 设置图片的总数
  39.   var ImgTotal = 80;

  40.   /// 设置图片的基本网址
  41.   var ImgBaseHref = "http://www.cfan.com.cn/pic/chahua/";

  42.   /// 设置图片的缩略图后缀
  43.   var imgThumb = ".gif";

  44.   /// 设置图片的大图后缀
  45.   var imgPicture = ".jpg";

  46.   document.onLoad=autoCreatePictureList();

  47.   function autoCreatePictureList()
  48.   {

  49.                 var objpTable;
  50.                 var objpTr;

  51.         var strTableOut;
  52.         var strTableIn;
  53.         var strTrOut;
  54.         var strTrIn;
  55.         var ColNum;

  56.         var strTrOutModify;
  57.         var strTrInModify;
  58.         var strTableOutModify;
  59.         var strTableInModify;

  60.         var strPrev = "";
  61.         var strNext = "";
  62.         var strPage = "";

  63.         var strBaseHref = "";

  64.      if (navigator.userAgent.indexOf("MSIE") != -1)
  65.      {
  66.                 objpTable = document.getElementById('pTable');
  67.                 objpTr = document.getElementById('pTr');
  68.         strTableOut= objpTable.outerHTML;
  69.         strTableIn = objpTable.innerHTML;
  70.         strTrOut   = objpTr.outerHTML;
  71.         strTrIn    = objpTr.innerHTML;

  72.         strTrOutModify = "";
  73.         strTrInModify = "";
  74.         strTableOutModify = "";
  75.         strTableInModify = "";
  76.      }
  77.      else
  78.      {
  79.             objpTable = document.getElementById('pTable');
  80.                 objpTr = document.getElementById('pTr');

  81.         strTableIn = objpTable.innerHTML;
  82.         strTrIn    = objpTr.innerHTML;

  83.         strTrInModify = "";
  84.         strTableInModify = "";
  85.      }

  86.      strBaseHref = window.location.pathname;
  87.      strHash = window.location.hash;
  88.      if (strHash=="")
  89.      {
  90.         strHash = window.location.search;
  91.      }
  92.      
  93.      if (strHash=="")
  94.      {
  95.         strHash = "page1";
  96.      }

  97.      var strPage;
  98.      var myregexp = /page(\d+)/;
  99.      var match = myregexp.exec(strHash);
  100.      if (match != null && match.length > 1) {
  101.         strPage = match[1];
  102.      } else {
  103.         strPage = "";
  104.      }

  105.      var strPicNum;
  106.      var myregexp = /pic(\d+)/;
  107.      var match = myregexp.exec(strHash);
  108.      if (match != null && match.length > 1) {
  109.         strPicNum = match[1];
  110.      } else {
  111.         strPicNum = "";
  112.      }

  113.      if (strPage=="")
  114.      {
  115.         if (strPicNum>1 && strPicNum<ImgTotal)
  116.         {
  117.            strPrev = "<a href='"+strBaseHref+"?pic"+(strPicNum*1-1)+"' target='_self'>上一张</a>";
  118.            strNext = "<a href='"+strBaseHref+"?pic"+(strPicNum*1+1)+"' target='_self'>下一张</a>";
  119.         }
  120.         else if (strPicNum==1)
  121.         {
  122.            strPrev = "上一张";
  123.            strNext = "<a href='"+strBaseHref+"?pic"+(strPicNum*1+1)+"' target='_self'>下一张</a>";
  124.         }
  125.         else if (strPicNum==ImgTotal)
  126.         {
  127.            strPrev = "<a href='"+strBaseHref+"?pic"+(strPicNum*1-1)+"' target='_self'>上一张</a>";
  128.            strNext = "下一张";
  129.         }
  130.         else
  131.         {
  132.            strPicNum = Math.round(Math.random() * ImgTotal);
  133.            if (strPicNum<=2)
  134.            {
  135.               strPicNum = 2;
  136.            }
  137.            else if(strPicNum>=ImgTotal-1)
  138.            {
  139.               strPicNum = ImgTotal-1;
  140.            }
  141.            strPrev = "<a href='"+strBaseHref+"?pic"+(strPicNum*1-1)+"' target='_self'>上一张</a>";
  142.            strNext = "<a href='"+strBaseHref+"?pic"+(strPicNum*1+1)+"' target='_self'>下一张</a>";
  143.         }

  144.         strTrInModify = strTrIn.replace(/\{IMAGE\}/g, "<img border='0' src='"+ImgBaseHref+strPicNum+imgPicture+"'>");
  145.         strTrInModify = strTrInModify.replace(/width=["']?150["']?/ig, "width=10%");

  146.         strPage = '<tr><td colspan="'+LineNum+'" rowspan="1" width=100% align=center>'+strPrev+' '+strNext+'</tr>';

  147.         if (navigator.userAgent.indexOf("MSIE") != -1)
  148.         {
  149.            strTableInModify = strTableIn.replace(strTrIn,strTrInModify);

  150.            strTableInModify = strPage + strTableInModify + strPage;

  151.            strTableOutModify = strTableOut.replace(strTableIn , strTableInModify);
  152.         }
  153.         else
  154.         {
  155.            strTableInModify = strTableIn.replace(strTrIn,strTrInModify);
  156.            strTableInModify = strPage + strTableInModify + strPage;
  157.         }
  158.      }
  159.      else
  160.      {

  161.         var intStart;
  162.         var intEnd;
  163.         var intPageTotal;

  164.         intPageTotal = Math.round(ImgTotal / (PageNum * LineNum)+0.4);
  165.         if (strPage>intPageTotal)
  166.         {
  167.            strPage = intPageTotal;
  168.         }
  169.         if (strPage<1)
  170.         {
  171.            strPage = 1;
  172.         }
  173.         intStart = (strPage-1) * PageNum * LineNum;
  174.         intEnd = (strPage-0) * PageNum * LineNum;
  175.         if (intEnd > ImgTotal)
  176.         {
  177.            intEnd = ImgTotal;
  178.         }
  179.         var pageImgTotal = intEnd - intStart;

  180.         ColNum = Math.round(pageImgTotal/LineNum+0.4) ;

  181.         for(j=0;j<ColNum;j++)
  182.         {
  183.            strTrInModify = "";

  184.            for (i=0;i<LineNum ;i++ )
  185.            {
  186.               if (j*LineNum+i+1+intStart>ImgTotal)
  187.               {
  188.                  strTrInModify = strTrInModify + strTrIn.replace(/\{IMAGE\}/g, " ");
  189.               }
  190.               else
  191.               {
  192.                  strTrInModify = strTrInModify + strTrIn.replace(/\{IMAGE\}/g, "<a href='"+strBaseHref+"#pic"+(j*LineNum+i+1+intStart)+"' target='_blank'><img border='0' src='"+ImgBaseHref+(j*LineNum+i+1+intStart)+imgThumb+"'></a>");
  193.               }
  194.            }
  195.            if (navigator.userAgent.indexOf("MSIE") != -1)
  196.            {
  197.               strTrOutModify = strTrOutModify + strTrOut.replace(strTrIn,strTrInModify);
  198.            }
  199.            else
  200.            {
  201.               strTableInModify = strTableInModify + strTableIn.replace(strTrIn,strTrInModify);
  202.            }
  203.         }

  204.         if (strPage>1 && strPage<intPageTotal)
  205.         {
  206.            strPrev = "<a href='"+strBaseHref+"?page"+(strPage*1-1)+"' target='_self'>上一页</a>";
  207.            strNext = "<a href='"+strBaseHref+"?page"+(strPage*1+1)+"' target='_self'>下一页</a> ";
  208.         }
  209.         else if (strPage==1)
  210.         {
  211.            strPrev = "上一页";
  212.            strNext = "<a href='"+strBaseHref+"?page"+(strPage*1+1)+"' target='_self'>下一页</a>";
  213.         }
  214.         else if (strPage==intPageTotal)
  215.         {
  216.            strPrev = "<a href='"+strBaseHref+"?page"+(strPage*1-1)+"' target='_self'>上一页</a>";
  217.            strNext = "下一页";
  218.         }
  219.       
  220.         strPageStart = "<a href='"+strBaseHref+"?page1' target='_self'>首页</a>";
  221.         strPageEnd = "<a href='"+strBaseHref+"?page"+intPageTotal+"' target='_self'>尾页</a>";
  222.         strPageIndex ="";
  223.         for (i=1;i<=intPageTotal;i++)
  224.         {
  225.            if (strPage == i)
  226.            {
  227.               strPageIndex = strPageIndex + "[<a href='"+strBaseHref+"?page"+i+"' target='_self'><b style='color:red'>"+i+"</b></a>]";
  228.            }
  229.            else
  230.            {
  231.               strPageIndex = strPageIndex + "[<a href='"+strBaseHref+"?page"+i+"' target='_self'>"+i+"</a>]";
  232.            }
  233.            
  234.         }
  235.         strPage = '<tr><td colspan="'+LineNum+'" rowspan="1" width=100% align=center>'+strPageStart+' '+strPrev+' '+' '+strPageIndex + ' ' + strNext+' '+strPageEnd+'</tr>';

  236.         if (navigator.userAgent.indexOf("MSIE") != -1)
  237.         {
  238.            strTrOutModify = strPage + strTrOutModify + strPage;
  239.            strTableOutModify = strTableOut.replace(strTableIn , strTrOutModify);
  240.         }
  241.         else
  242.         {
  243.            strTableInModify = strPage + strTableInModify + strPage;
  244.            strTableInModify = strTableInModify;
  245.         }
  246.      }
  247.      if (navigator.userAgent.indexOf("MSIE") != -1)
  248.      {
  249.         strTableOutModify = strTableOutModify.replace(/vAlign=center/ig, "align=center");
  250.         strTableOutModify = strTableOutModify.replace(/align=middle/ig, "valign=middle");
  251.         objpTable.outerHTML = strTableOutModify;
  252.      }
  253.      else
  254.      {
  255.         strTableInModify = strTableInModify.replace(/vAlign=center/ig, "align=center");
  256.         strTableInModify = strTableInModify.replace(/align=middle/ig, "valign=middle");
  257.         objpTable.innerHTML = strTableInModify;
  258.      }

  259.   }

  260. </script>
  261. </body></html>
复制代码

[ 本帖最后由 HonestQiao 于 2005-12-9 11:01 编辑 ]

论坛徽章:
0
发表于 2005-10-18 19:36 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

不错,收了。
楼言javaScript挺强呀。
呵呵,我javascript只是入门,能写点小程序。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
发表于 2005-10-18 19:42 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

原帖由 "dozec" 发表:
不错,收了。
楼言javaScript挺强呀。
呵呵,我javascript只是入门,能写点小程序。


拷贝下来测试过了么?

给一点意见啊。

论坛徽章:
0
发表于 2005-10-18 21:23 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

测试过了,OK。

论坛徽章:
0
发表于 2005-10-18 21:25 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

版大 好强啊.
用js写东西没有达到你这样的水平 无法给予评论^_^
收藏谢谢先,需要好好学习

论坛徽章:
0
发表于 2005-10-18 23:31 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

好帖子,顶阿

论坛徽章:
0
发表于 2005-10-18 23:43 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

很欣赏Qiao老兄的Idea!
也欣赏Qiao老兄的眼光!
也欣赏Qiao老兄的美图!

我决定全下载了.

<?php
/// 设置图片的总数
$ImgTotal = 80;

/// 设置图片的基本网址
$ImgBaseHref = "http://www.cfan.com.cn/pic/chahua/";

/// 设置图片的缩略图后缀
$imgThumb = ".gif";

/// 设置图片的大图后缀
$imgPicture = ".jpg";

/// 文件名前缀
$imgPrefix = "";

/// 小图存放目录
$small = realpath(".")."/small";

/// 大图存放目录
$large = realpath(".")."/large";

/// 创建小图目录
if (!file_exists($small))
    if (!mkdir($small))
    {
       echo "创建小图目录失败!";
       exit(0);
    }
/// 创建大图目录
if (!file_exists($large))
    if (!mkdir($large))
    {
       echo "创建小图目录失败!";
       exit(0);
    }

/// 获取大小图
$k=0;  //大小图的总数量累计
for($j=0;$j<2;$j++)
{
   for ($i=0;$i<$ImgTotal;$i++)
   {
      $num=$i+1;
      if($j==0)
      {
        $src="$ImgBaseHref$imgPrefix$num$imgThumb";
        $dst="$small/$imgPrefix$num$imgThumb";
      }
      else
      {
        $src="$ImgBaseHref$imgPrefix$num$imgPicture";
        $dst="$large/$imgPrefix$num$imgPicture";
      }
      if (!file_exists($dst))
      {
         echo "$src 正在下载...\n";
         $contents = file_get_contents($src);
         if ($contents!="")
         {
           if (file_put_contents($dst,$contents) >; 0 )
              $k=$k+1;
           else
              echo "$src 保存失败,稍后再试!\n";
         }
         else
         {
            echo "$src 下载不成功,稍后再试!\n";
         }
      }
      else $k=$k+1;
   }
   if($j==1)
      if($k<2*$ImgTotal)
      {
        echo "还有些图片没有下载成功,继续!\n";
        $j = -1;  //再做一次,重新下载那些失败的文件.
        $k = 0;
      }
}  // next 执行两次,一次小图,一次大图

?>;

论坛徽章:
0
发表于 2005-10-18 23:48 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

Sorry程序码排版有些乱.

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
发表于 2005-10-19 11:40 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

原帖由 "jasonli"]Sorry程序码排版有些乱.
[code 发表:
<?php
// --------------------------------------------------------------------------
// File name   &#58; test.php
// Description &#58; 自动抓图&#40;原版重金抄袭jasonli的代码&#41;
// Requirement &#58; PHP4 &#40;http&#58;//www.php.net&#41;

// Copyright&#40;C&#41;, HonestQiao, 2005, All Rights Reserved.

// Author&#58; HonestQiao &#40;honestqiao@hotmail.com&#41;

// --------------------------------------------------------------------------
// / 设置图片的总数
$ImgTotal = 80;
// / 设置图片的基本网址
$ImgBaseHref = &quot;http&#58;//www.cfan.com.cn/pic/chahua/&quot;;
// / 设置图片的缩略图后缀
$imgThumb = &quot;.gif&quot;;
// / 设置图片的大图后缀
$imgPicture = &quot;.jpg&quot;;
// / 文件名前缀
$imgPrefix = &quot;&quot;;
// / 小图存放目录
$small = realpath&#40;&quot;.&quot;&#41; . &quot;/small&quot;;
// / 大图存放目录
$large = realpath&#40;&quot;.&quot;&#41; . &quot;/large&quot;;
// / 创建小图目录
if &#40;!file_exists&#40;$small&#41;&#41;
    if &#40;!mkdir&#40;$small&#41;&#41;
    {
        echo &quot;创建小图目录失败!&quot;;
        exit&#40;0&#41;;
    }
    // / 创建大图目录
    if &#40;!file_exists&#40;$large&#41;&#41;
        if &#40;!mkdir&#40;$large&#41;&#41;
        {
            echo &quot;创建小图目录失败!&quot;;
            exit&#40;0&#41;;
        }
        // / 获取大小图
        $k = 0; //大小图的总数量累计
        for&#40;$j = 0;$j < 2;$j++&#41;
        {
            for &#40;$i = 0;$i < $ImgTotal;$i++&#41;
            {
                $num = $i + 1;
                if &#40;$j == 0&#41;
                {
                    $src = &quot;$ImgBaseHref$imgPrefix$num$imgThumb&quot;;
                    $dst = &quot;$small/$imgPrefix$num$imgThumb&quot;;
                }
                else
                {
                    $src = &quot;$ImgBaseHref$imgPrefix$num$imgPicture&quot;;
                    $dst = &quot;$large/$imgPrefix$num$imgPicture&quot;;
                }
                if &#40;!file_exists&#40;$dst&#41;&#41;
                {
                    echo &quot;$src 正在下载...\n&quot;;
                    $contents = file_get_contents&#40;$src&#41;;
                    if &#40;$contents != &quot;&quot;&#41;
                    {
                        if &#40;file_put_contents&#40;$dst, $contents&#41; >; 0&#41;
                            $k = $k + 1;
                        else
                            echo &quot;$src 保存失败,稍后再试!\n&quot;;
                    }
                    else
                    {
                        echo &quot;$src 下载不成功,稍后再试!\n&quot;;
                    }
                }
                else $k = $k + 1;
            }
            if &#40;$j == 1&#41;
                if &#40;$k < 2 * $ImgTotal&#41;
                {
                    echo &quot;还有些图片没有下载成功,继续!\n&quot;;
                    $j = -1; //再做一次,重新下载那些失败的文件.
                    $k = 0;
                }
            } // next 执行两次,一次小图,一次大图

            ?>;[/code]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
发表于 2005-10-24 16:25 |显示全部楼层

[乔楚技术][原创][非PHP] JS做的批量图片展示程序

中文显示不对,不要在里头用中文。虽然可以设置一个头。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP