循环浏览本地文件夹并动态创建元素

Posted

技术标签:

【中文标题】循环浏览本地文件夹并动态创建元素【英文标题】:Loop through local folder & dynamically create elements 【发布时间】:2018-07-28 06:44:36 【问题描述】:

我想制作一个 jquery-ui 选项卡菜单,每个选项卡上包含 54 个图像。我在一个文件夹中有 880 个图像,并且为每个图像使用 <img> 需要很长时间。我可以循环浏览每一个并将它们动态附加到选项卡吗?这就是我想要一个标签的样子。

img 
    width: 35px;
    height: 35px;

#tabs 
    width: 420px;
    height: 300px;

.ui-tabs .ui-tabs-nav .ui-tabs-anchor 
	  float: left;
	  padding: .1em .175em;
	  text-decoration: none;
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Tabs - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <style>
      img 
          width: 35px;
          height: 35px;
      
      #tabs 
          width: 420px;
          height: 300px;
      
      .ui-tabs .ui-tabs-nav .ui-tabs-anchor 
	  float: left;
	  padding: .1em .175em;
	  text-decoration: none;
      
  </style>
  <script>
  $( function() 
    $( "#tabs" ).tabs();
   );
  </script>
</head>
<body>
 
<div id="tabs">
  <ul>
    <li><a href="#tabs-1">1</a></li>
    <li><a href="#tabs-2">2</a></li>
    <li><a href="#tabs-3">3</a></li>
    <li><a href="#tabs-4">4</a></li>
    <li><a href="#tabs-5">5</a></li>
    <li><a href="#tabs-6">6</a></li>
    <li><a href="#tabs-7">7</a></li>
    <li><a href="#tabs-8">8</a></li>
    <li><a href="#tabs-9">9</a></li>
    <li><a href="#tabs-10">10</a></li>
    <li><a href="#tabs-11">11</a></li>
    <li><a href="#tabs-12">12</a></li>
    <li><a href="#tabs-13">13</a></li>
    <li><a href="#tabs-14">14</a></li>
    <li><a href="#tabs-15">15</a></li>
    <li><a href="#tabs-16">16</a></li>
    <li><a href="#tabs-17">17</a></li>
  </ul>
  <div id="tabs-1">
    <img src="emojis-master/100.png"/>
    <img src="emojis-master/1234.png"/>
    <img src="emojis-master/8ball.png"/>
    <img src="emojis-master/a.png"/>
    <img src="emojis-master/ab.png"/>
    <img src="emojis-master/abc.png"/>
    <img src="emojis-master/abcd.png"/>
    <img src="emojis-master/accept.png"/>
    <img src="emojis-master/aerial_tramway.png"/>
    <img src="emojis-master/airplane.png"/>
    <img src="emojis-master/alarm_clock.png"/>
    <img src="emojis-master/alien.png"/>
    <img src="emojis-master/ambulance.png"/>
    <img src="emojis-master/anchor.png"/>
    <img src="emojis-master/angel.png"/>
    <img src="emojis-master/anger.png"/>
    <img src="emojis-master/angry.png"/>
    <img src="emojis-master/anguished.png"/>
    <img src="emojis-master/ant.png"/>
    <img src="emojis-master/apple.png"/>
    <img src="emojis-master/aquarius.png"/>
    <img src="emojis-master/aries.png"/>
    <img src="emojis-master/arrow_backward.png"/>
    <img src="emojis-master/arrow_double_down.png"/>
    <img src="emojis-master/arrow_double_up.png"/>
    <img src="emojis-master/arrow_down.png"/>
    <img src="emojis-master/arrow_down_small.png"/>
    <img src="emojis-master/arrow_forward.png"/>
    <img src="emojis-master/arrow_heading_down.png"/>
    <img src="emojis-master/arrow_heading_up.png"/>
    <img src="emojis-master/arrow_left.png"/>
    <img src="emojis-master/arrow_lower_left.png"/>
    <img src="emojis-master/arrow_lower_right.png"/>
    <img src="emojis-master/arrow_right.png"/>
    <img src="emojis-master/arrow_right_hook.png"/>
    <img src="emojis-master/arrow_up.png"/>
    <img src="emojis-master/arrow_up_down.png"/>
    <img src="emojis-master/arrow_up_small.png"/>
    <img src="emojis-master/arrow_upper_left.png"/>
    <img src="emojis-master/arrow_upper_right.png"/>
    <img src="emojis-master/arrows_clockwise.png"/>
    <img src="emojis-master/arrows_counterclockwise.png"/>
    <img src="emojis-master/art.png"/>
    <img src="emojis-master/articulated_lorry.png"/>
    <img src="emojis-master/atm.png"/>
    <img src="emojis-master/b.png"/>
    <img src="emojis-master/baby.png"/>
    <img src="emojis-master/baby_bottle.png"/>
    <img src="emojis-master/baby_chick.png"/>
    <img src="emojis-master/back.png"/>
    <img src="emojis-master/bad.png"/>
    <img src="emojis-master/baggage_claim.png"/>
    <img src="emojis-master/balloon.png"/>
    <img src="emojis-master/ballot_box_with_check.png"/>
  </div>
  <div id="tabs-2">
  </div>
  <div id="tabs-3">
  </div>
  <div id="tabs-4">
  </div>
  <div id="tabs-5">
  </div>
  <div id="tabs-6">
  </div>
  <div id="tabs-7">
  </div>
  <div id="tabs-8">
  </div>
  <div id="tabs-9">
  </div>
  <div id="tabs-10">
  </div>
  <div id="tabs-11">
  </div>
  <div id="tabs-12">
  </div>
  <div id="tabs-13">
  </div>
  <div id="tabs-14">
  </div>
  <div id="tabs-15">
  </div>
  <div id="tabs-16">
  </div>
  <div id="tabs-17">
  </div>
</div>
 
 
</body>
</html>

提前致谢。我需要写这个,否则我不能发布这个问题,因为我有很多代码。忽略这部分。

【问题讨论】:

我有java...也许我应该使用它? @Occam'sRazor 好的,java 可以工作。我建议在后端编写一个脚本来创建一个包含每个文件名的 JSON 文件,然后 ajax 并循环它。 看看tabs: external content via Ajax @gaetanoM 这比我的建议更好。不错! Is there a way to return a list of all the image file names from a folder using only javascript?的可能重复 【参考方案1】:

如果您的文件位于服务器上并且您想要动态填充 HTML 文件,或者如果您的文件位于常规(非服务器)设备上,您将需要一个服务器端解决方案,您需要运行一些文件操作。不幸的是,这两个选项都不能在浏览器环境中使用。

在服务器端,您可以使用 php scandir() 方法或 Node.js fs.readdir() 方法将文件列表作为文本转储到您的页面,例如插入 JavaScript 变量列表或 URL 数组.或者您可以使用其中之一来编译您的文件或文件结构的 JSON 表示,并将 AJAX 编译到您的应用程序中。

在非服务器环境中,我建议使用命令行ls function 创建文件列表以供在应用程序中使用,或者通常在突出显示所有文件时,Ctrl+C 复制并粘贴将其转换为文本文档,您将获得一个列表文件地址,可以轻松地将其转换为 JavaScript 数组或 JSON 文件。就我个人而言,我会考虑走 JSON 路线。

您可能还会发现这些链接很有用...

节点:directory listing to JSON PHP:directory listing to JSON Python:directory listing to JSON

;)

【讨论】:

以上是关于循环浏览本地文件夹并动态创建元素的主要内容,如果未能解决你的问题,请参考以下文章

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?