如何将这些功能组合起来而不重复呢?

2023-12-12

由于所有 3 个产品功能都有相同的产品列表,我如何将这些多个功能合并为一个,这样我就可以避免在这里重复。

所有功能都有产品列表,只是货币不同,如何将这三个功能合二为一?有人可以建议我吗?谢谢

function ProductDataRenderer() { }
    
    ProductDataRenderer.prototype.render = function () {
        var nzd = 
            '<table class="table table-striped">'
            +'  <thead>'
            +'      <tr><td colspan="3">Products (NZD)</td></tr>'
            +'      <tr>'
            +'          <td>Name</td>'
            +'          <td>Price</td>'
            +'          <td>Type</td>'
            +'      </tr>'
            +'  </thead>'
            + ' <tbody>';
    
        var n = ProductDataConsolidator.get();
        for (var i = 0; i < n.length; i++) {
            nzd +=
                '<tr>'
            +       '<td>' + n[i].name +'</td>'
            +       '<td>' + n[i].price + '</td>'
            +       '<td>' + n[i].type + '</td>'
            +   '</tr>';
        }
        nzd += '</tbody></table>';
        document.getElementById("nzdProducts").innerHTML = nzd;
    
        var usd =
            '<table class="table table-striped">'
            + ' <thead>'
            + '     <tr><td colspan="3">Products (USD)</td></tr>'
            + '     <tr>'
            + '         <td>Name</td>'
            + '         <td>Price</td>'
            + '         <td>Type</td>'
            + '     </tr>'
            + ' </thead>'
            + ' <tbody>';
    
        var u = ProductDataConsolidator.getInUSDollars();
        for (var i = 0; i < u.length; i++) {
            usd +=
                '<tr>'
            +       '<td>' + u[i].name + '</td>'
            +       '<td>' + u[i].price + '</td>'
            +       '<td>' + u[i].type + '</td>'
            + '</tr>';
        }
        usd += '</tbody></table>';
        document.getElementById("usdProducts").innerHTML = usd;
    
        var euro =
            '<table class="table table-striped">'
            + ' <thead>'
            + '     <tr><td colspan="3">Products (Euro)</td></tr>'
            + '     <tr>'
            + '         <td>Name</td>'
            + '         <td>Price</td>'
            + '         <td>Type</td>'
            + '     </tr>'
            + ' </thead>'
            + ' <tbody>';
    
        var e = ProductDataConsolidator.getInEuros();
        for (var i = 0; i < e.length; i++) {
            euro +=
                '<tr>'
            +       '<td>' + e[i].name + '</td>'
            +       '<td>' + e[i].price + '</td>'
            +       '<td>' + e[i].type + '</td>'
            + '</tr>';
        }
        euro += '</tbody></table>';
        document.getElementById("euProducts").innerHTML = euro;
    }

嘿,这个应该可以解决问题

const renderTable = ({ items, title, containerId }) => {
  let tableTemplate =
    '<table class="table table-striped">' +
    '  <thead>' +
    `      <tr><td colspan="3">${title}</td></tr>` +
    '      <tr>' +
    '          <td>Name</td>' +
    '          <td>Price</td>' +
    '          <td>Type</td>' +
    '      </tr>' +
    '  </thead>' +
    ' <tbody>'

  for (let i = 0; i < items.length; i++) {
    tableTemplate +=
      '<tr>' +
      `<td>${items[i].name}</td>` +
      `<td>${items[i].price}</td>` +
      `<td>${items[i].type}</td>` +
      `</tr>`
  }

  tableTemplate += '</tbody></table>'
  document.getElementById(containerId).innerHTML = tableTemplate
}

renderTable({
  items: ProductDataConsolidator.get(),
  title: 'Products (NZD)',
  containerId: 'nzdProducts'
})
renderTable({
  items: ProductDataConsolidator.getInUSDollars(),
  title: 'Products (USD)',
  containerId: 'usdProducts'
})
renderTable({
  items: ProductDataConsolidator.getInEuros(),
  title: 'Products (Euro)',
  containerId: 'euProducts'
})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将这些功能组合起来而不重复呢? 的相关文章

  • 为什么这个“[::-1]”在Python中返回一个反向列表? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 切片表示法的良好入门指南 https stackoverflow com questions 509211 good primer for python slice notation P
  • 切换 Ag-Grid 中的浮动过滤器?

    我试图通过开关或按钮单击来确定浮动过滤器的显示 看起来很简单 我应该能够在 true 和 false 之间切换 将该值提供给网格选项中的浮动过滤器 然后刷新标题 对吗 不幸的是 网格似乎总是落后一步 当我第一次点击时 什么也没有发生 当我将
  • printf '%s\n' "${array[@]}" 每个数组元素打印一行是否正常?

    在我的 bash 脚本中 我包含了程序所需的一系列其他文件 然后我在帮助说明中打印这些内容 当我使用 printf 进行输出时 我得到了意想不到的结果 我读到 形式 array 通常是首选的扩展默认形式 所以我从它开始 我的数组声明 scr
  • 如何防止用户调整 clistctrl(报表视图)的列宽?

    如何防止用户调整 clistctrl 报表视图 的列宽 你必须覆盖OnNotify方法来捕获标头的 TRACK 消息 这是一个解决方案 防止列大小调整 http www codeguru com cpp controls listview
  • 如何让机器人状态显示为“手机在线”

    我看到 NotSoBot 的状态为在线在移动 https i stack imgur com IiF4k png 有没有办法可以在discord js 中做到这一点 我知道这已经很旧了 但更简单的方法是将其添加到定义客户端 机器人的位置 c
  • 递归process.nextTick警告

    作为我的应用程序的一部分 我有以下代码行 process nextTick function pre populate cache with all users console log scanning users table in ord
  • JavaScript - babel-preset-env 不为 IE11 转换箭头函数

    我很难尝试配置 Babel 来转译 IE11 可以理解的代码 特别是箭头函数 跑步npx webpack mode development使用我的配置不会转换我的代码中的箭头函数 在eval 在生成的代码中的语句中 我可以看到所有实例都未转
  • Google 闭包编译器使用 WebStorm

    我喜欢用谷歌闭包编译器 https developers google com closure compiler in WebStorm https www jetbrains com webstorm 我已经通过 npm 下载了它 npm
  • 按周将对象数组拆分为组

    我有一个包含这样的数据的对象数组 date 01 01 2017 00 00 00 dataField1 dataField2 date 01 02 2017 00 00 00 dataField1 dataField2 date 01 1
  • 在浏览器开发工具中看不到SignalR流量

    我构建了使用 SignalR 的服务器和客户端代码 该网站运行完美 但我无法在任何浏览器 chrome IE Firefox 中看到网络流量 我知道网络流量在那里 因为该网站正在运行 有没有办法在浏览器中查看 SignalR 流量 如果不是
  • 如何在Javascript中保存zip文件的二进制数据?

    我从 AJAX 响应中收到以下响应 这是 zip 文件的响应 请让我知道如何在 Javascript 中保存此 filename zip ZIP 里面有 PDF 文件 我的代码是这样的 ajax url baseURLDownload se
  • 如何在 Electron 中使窗口大小响应。 (打开应用程序时)

    我最近开始在 Electron 上制作一个应用程序 我想让窗口具有响应能力 例如 如果我在不同的屏幕上打开应用程序 它应该根据屏幕尺寸以全尺寸打开 我的代码 app on ready gt const htmlPath path join
  • Django 管理中的自定义依赖下拉菜单

    我有一个按阶段模型的项目外键 我很难在 Django 管理页面中创建依赖的下拉列表 我想当用户从该项目的 项目下拉 阶段选择一个项目时 在第二个下拉菜单中显示 实现这一目标的最佳方法是什么 如果下拉列表根据其父级的值来过滤项目 那就太好了
  • 我以为我了解范围

    有人可以告诉我为什么 x 的最后一次记录等于0而不是1 我想因为它是在函数之外声明的 所以它具有全局范围 然后在函数中它的值设置为1并且该值将保持原样一个全球性的 我知道函数内的第一个 x 值是全局的 因为没有 var 关键字声明的任何变量
  • Rails:如何处理“属性应该是数组,但实际上是字符串”错误?

    我有一个表格 其中有一列是文本类型 里面有一个小字符串 应该序列化为数组 serialize image urls Array 有时 SQL 插入数据的速度更快 在这种情况下 我将插入作为字符串 image1 jpg image2 jpg
  • 我可以使用对象(类的实例)作为 Python 中的字典键吗?

    我想使用类实例作为字典键 例如 classinstance class dictionary classinstance hello world Python似乎无法将类作为字典键处理 还是我错了 另外 我可以使用像 classinstan
  • 如何从 PHP 中的两个不同数组获取公共值

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有两个带有一些用户 ID 的数组 array1 array 5 26 38 42 array2 array 15 36 38 42 我需
  • CORS:为什么我的浏览器不发送 OPTIONS 预检请求?

    从我读到的内容来看CORS https en wikipedia org wiki Cross origin resource sharing 我理解它应该按如下方式工作 客户端的脚本尝试获取资源从服务器不同的起源 浏览器拦截这个请求并首先
  • 将 html

    我有一些服务器端代码当前支持 http 字节范围请求 没有任何问题 但是 我希望能够在将转码后的块发送到客户端之前使用 ffmpeg 即时转码视频文件 位于磁盘上 但 ffmpeg 要求我在获取字节时给它一个寻道时间范围来自客户 给定客户端
  • 使用二维动态数组编写一个类

    我有一个家庭作业 我并不是在寻找任何人为我做这项工作 我只是在一个小方面遇到了麻烦 尽管我也接受其他方面的建议 任务是 使用二维动态数组编写一个类 构造函数传入数组的维度 构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组

随机推荐

  • 如何在 PHP 中发送 HTTP 请求并检索响应(通过标头微调)?

    我必须向 URL 发送 HTTP 请求并检索响应和标头 我不仅对页面内容感兴趣 而且对所有标题也感兴趣 最佳解决方案是什么 插座 PEAR 库不可访问 PHP 配置不可编辑 你应该使用curl 文档中的快速示例
  • 如何在与主程序不同的线程中编写套接字服务器(使用 gevent)?

    我正在开发一个 Flask gevent WSGIserver Web 服务器 它需要使用 XML 通过两个套接字与硬件设备进行通信 在后台 一个套接字由客户端 我的应用程序 启动 我可以向设备发送 XML 命令 设备在不同的端口上应答并发
  • Objective-C / C 从 SecKeyRef 中提取私钥(模数)

    我需要一种干净的方法来提取我的服务器公钥并将其与本地数据进行比较 以防止将来密钥过期 更新 但我似乎无法获取 256 位密钥或将其表示为有用的数据为了比较 这是我到目前为止所拥有的 BOOL trustCertFromChallenge N
  • 提升消费者进程中的共享内存和同步队列问题/崩溃

    我正在尝试从子进程消耗 C 中的同步队列 我在 C 中使用这个同步队列 http www internetmosquito com 2011 04 making thread safe queue in c i html 我修改了队列以在b
  • Selenium webdriver 在尝试通过 ANT 运行时抛出异常

    我正在通过 Eclipse 使用 selenium 运行我的 UI 自动化测试用例 它运行良好 没有任何问题 当我在 Eclipse 中执行此操作时 会启动浏览器 执行测试用例 更新结果 然而 当我尝试通过 ANT 运行它时 它开始给我带来
  • Python字典复制方法

    我对字典复制方法有疑问 例如 假设我有 gt gt d pears 200 apples 400 oranges 500 bananas 300 gt gt copy dict d copy 现在 如果我检查 d 和 copy dict 的
  • 如何使用 css 在同一位置显示 2 个元素?

    div ul class social icon li a href class social facebook i class fa fa facebook i i class fa fa facebook ff i a li ul di
  • 数组动态时的最小查询范围

    我有一个大小为 1 的数组 A 0 索引 我想找到数组 A 中索引 k1 k1 gt 0 和 A size 1 即最后一个元素 之间的最小值 然后我会在数组末尾插入值 给定范围内的最小元素 一些 随机 常量 然后我有另一个查询来查找索引 k
  • 带变量的 SQL 查询

    我正在为学校做 PAT 我正在执行以下操作 我该如何纠正它 我想发送一个已输入的电子邮件地址 name ID 数字 出生日期 gender town一切都是字符串我的声明是 Adoquery1 sql text insert into be
  • Accepts_nested_attributes_for 部分的 AJAX 更新

    我当前的工作环境是Rails2 3 8 我的公司没有迁移到 Rails 3 的原因有很多 我正在尝试通过 AJAX 调用更新多模型表单的元素 这个想法是根据用户如何选择或填写其他字段来替换某些下拉列表 我之前曾设法通过使用基于非表单的部分来
  • python 中嵌套列表的意外行为

    我有一个名为的嵌套列表basic我想更改其中一项 我假设了以下行为 expected 9 0 unexpected 9 9 basic 0 0 basic 0 0 9 print basic expected this is true 然而
  • C : 这个数组初始化合法吗?

    int ar 1 2 3 这段代码合法吗 我的本意是这样的 int ar 1 2 3 是的 C89 和 GNU89 中的初始化列表中都允许使用杂散逗号 在采用可选 可变参数的宏中非常有用 请参阅第 3 5 7 节ANSI C 标准对于定义它
  • 我什么时候需要重新编译 Jasper 报告

    我正在使用 JasperReporting 引擎 我需要优化报告性能 目前 我的应用程序每次都从 jrxml 文件编译报告 因为我现在不更改报告 并且应用程序无法生成用户定义的报告 我应该编译它们一次并在将来使用 jasper 文件 我对吗
  • 动态更改“模板”layout.updatemenus[] Dropdown

    我有一个 Python Dash 应用程序 它显示只有一个跟踪的 Plotly graph object timeline 我认为这个问题不应该取决于跟踪的数量 我想要一个layout updatemenus下拉按钮 它允许我更改图形的模板
  • 返回鼠标Tkinter下图像像素的RGB颜色

    我正在尝试从图像中鼠标单击的位置获取 RGB 值 我试图仅使用 Tkinter 来完成这一切 以保持代码简单 并且由于某种原因我无法正确安装 PIL 并且我不知道这是否可能 感谢您的帮助 我很困惑 from serial import im
  • 使用 AlertDialog 的模态对话框功能

    我想保留AlertDialog直到用户按下其上的任何按钮为止 换句话说 即使用户按下任何其他区域 如其父区域 或按下后退按钮 对话框仍必须保持焦点 请告诉我要使用哪种 Android 4 0 API 方法 提前非常感谢 use setCan
  • 在 BitBucket 上为许多用户和补丁使用 Mercurial 补丁队列存储库

    很抱歉这个由多个部分组成的问题 但我很难理解将 Mercurial 补丁队列与 BitBucket 结合使用的预期方法 而且 Google 也没有提供太多帮助 我希望描述一些 MQ 概念的一个答案能够同时涵盖许多问题 我读过了http ch
  • jQuery 可排序取消事件(如果无效)

    我有一个可排序的列表 在开始排序之前 我想检查该列表的所有元素是否有效 如果没有 请取消活动并保持列表不变 您可以在这里找到代码http jsfiddle net DZYW5 4 当我使用它时 事件被取消 但元素被删除 start func
  • 如何在 Helm for Kubernetes 中循环不同的模板?

    我想部署具有不同图像 端口等但具有非常相似的其他属性的多个 Pod 部署 所以我想声明一个deployment yaml文件看起来像这样 range Values types apiVersion extensions v1beta1 ki
  • 如何将这些功能组合起来而不重复呢?

    由于所有 3 个产品功能都有相同的产品列表 我如何将这些多个功能合并为一个 这样我就可以避免在这里重复 所有功能都有产品列表 只是货币不同 如何将这三个功能合二为一 有人可以建议我吗 谢谢 function ProductDataRende