You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现表格自动填充Dinamico下HTML及切换iframe模板?

解决方案:自动生成表格行 + 切换iframe模板

我来帮你实现这两个需求,下面分步骤讲解代码修改方案:

1. 自动加载"Dinamico"目录下的HTML文档到表格

前端JavaScript没办法直接读取本地文件系统的目录内容,这里给你两种可行方案:

方案A:后端配合返回文件列表(推荐)

如果你的项目有后端服务,可以写一个简单接口,返回Templates/Dinamico/目录下所有HTML文件的信息(文件名、标题、描述),前端通过fetch获取数据后动态生成表格行。

示例代码:

// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', async function() {
  const table = document.querySelector('.table');
  try {
    // 请求后端接口获取文件列表(假设返回JSON格式)
    const response = await fetch('/api/get-dinamico-files');
    const files = await response.json();
    
    // 遍历文件生成表格行
    files.forEach(file => {
      const row = document.createElement('tr');
      row.innerHTML = `
        <td><a href="Templates/Dinamico/${file.name}">${file.title}</a></td>
        <td>${file.description}</td>
      `;
      table.appendChild(row);
    });
  } catch (error) {
    console.error('加载文件列表失败:', error);
  }
});

方案B:纯前端维护文件数组(适合静态站点)

如果没有后端支持,你可以手动维护一个包含Dinamico目录文件信息的数组,每次新增HTML文件时更新这个数组,前端会自动生成对应的表格行:

document.addEventListener('DOMContentLoaded', function() {
  const table = document.querySelector('.table');
  // 维护Dinamico目录的文件信息,新增文件时更新这里
  const dinamicoFiles = [
    {"name": "formD1.html", "title": "Metadados Dinamico", "description": "Conteudos da Porto 2001"},
    {"name": "formD2.html", "title": "Metadados Dinamico 2", "description": "另一个动态模板的描述"}
    // 新增文件时添加新对象即可
  ];
  
  dinamicoFiles.forEach(file => {
    const row = document.createElement('tr');
    row.innerHTML = `
      <td><a href="Templates/Dinamico/${file.name}">${file.title}</a></td>
      <td>${file.description}</td>
    `;
    table.appendChild(row);
  });
});

2. 点击模板链接切换iframe内容

首先给目标iframe添加一个ID,方便我们快速获取元素;然后给表格里的所有模板链接绑定点击事件,切换iframe的src属性。

步骤1:修改iframe标签

给显示模板的iframe加上ID:

<div>
  <!-- 添加id="templateFrame" -->
  <iframe id="templateFrame" src="page.html" frameBorder="0" width="70%" height="600px" align="left" scrolling="no"></iframe>
</div>

步骤2:添加切换逻辑的JavaScript

document.addEventListener('DOMContentLoaded', function() {
  const templateFrame = document.getElementById('templateFrame');
  const tableLinks = document.querySelectorAll('.table a');
  
  tableLinks.forEach(link => {
    link.addEventListener('click', function(e) {
      e.preventDefault(); // 阻止默认跳转行为
      const templateUrl = this.getAttribute('href');
      
      // 跳过href为#的未配置链接
      if (templateUrl === '#') {
        alert('Este modelo ainda não tem link configurado!');
        return;
      }
      
      // 切换iframe的内容
      templateFrame.src = templateUrl;
    });
  });
});

完整整合后的代码示例

表格部分(嵌入页面)

<table cellspacing="0" cellpadding="0" border="0" class="table">
  <tr>
    <th>Esquema de MetaDados</th>
    <th>Descrição</th>
  </tr>
  <tr>
    <td><a href="Templates/MetaDadosVideo/template_Video.html">Metadados Video</a></td>
    <td>Catalogação e arquivo de conteúdos de Videos de Concerto, entrevistas</td>
  </tr>
  <tr>
    <td><a href="Templates/MetaDadosGráficos/template_gráficos.html">Metadados Materiais Gráficos</a></td>
    <td>Arquivo de Materias Gráficos Finais</td>
  </tr>
  <tr>
    <td><a href="#">Metadados Porto 2001</a></td>
    <td>Conteudos da Porto 2001</td>
  </tr>
  <!-- Dinamico目录的行将由JS自动生成 -->
</table>

页面完整代码(整合所有逻辑)

<!DOCTYPE html>
<html id="the">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="../../CSS/form.css">
</head>
<body style="background-color:white;">
  <script>
    var Nome; // Nome do esquema
    var Desc; // descrição do esquema
    var temas = []; // Nome dos temas do form
    var fields = []; // nr de campos
    var FL= []; // Nome do campo
    var TF =[]; // tipo do campo

    // 页面加载完成后执行所有逻辑
    document.addEventListener('DOMContentLoaded', function() {
      // 1. 自动生成Dinamico目录的表格行(方案B示例)
      const table = document.querySelector('.table');
      const dinamicoFiles = [
        {"name": "formD1.html", "title": "Metadados Dinamico", "description": "Conteudos da Porto 2001"},
        // 新增文件时在这里添加
      ];
      
      dinamicoFiles.forEach(file => {
        const row = document.createElement('tr');
        row.innerHTML = `
          <td><a href="Templates/Dinamico/${file.name}">${file.title}</a></td>
          <td>${file.description}</td>
        `;
        table.appendChild(row);
      });

      // 2. 切换iframe模板
      const templateFrame = document.getElementById('templateFrame');
      const tableLinks = document.querySelectorAll('.table a');
      
      tableLinks.forEach(link => {
        link.addEventListener('click', function(e) {
          e.preventDefault();
          const templateUrl = this.getAttribute('href');
          
          if (templateUrl === '#') {
            alert('Este modelo ainda não tem link configurado!');
            return;
          }
          
          templateFrame.src = templateUrl;
        });
      });
    });
  </script>
  <div>
    <iframe src="../../Resources/logo-cm__.png" frameBorder="0" width="30%" height="80px" align="left" scrolling="no"></iframe>
  </div>
  <div>
    <iframe src="../../Resources/title.png" frameBorder="0" width="60%" height="80px" align="center" scrolling="no"></iframe>
  </div>
  <div>
    <iframe id="templateFrame" src="page.html" frameBorder="0" width="70%" height="600px" align="left" scrolling="no"></iframe>
  </div>
  <div>
    <iframe src="../../galeria/frame2_galeria.html" frameBorder="0" width="29%" height="600px" align="right" scrolling="yes"></iframe>
  </div>
  <a onclick="this.href='data:text/html;charset=UTF-8,'+encodeURIComponent(document.documentElement.outerHTML)" href="#" download="page.html">Download Template</a>
</body>
</html>

这样修改后,每次你在Dinamico目录新增HTML文件,只需要更新dinamicoFiles数组;点击表格里的模板链接,中间的iframe就会自动切换到对应的模板页面啦。

内容的提问来源于stack exchange,提问作者Luis Luis Maia Maia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:07:00